gaoguosheng
路人甲
路人甲
  • 注册日期2005-08-02
  • 发帖数38
  • QQ18087249
  • 铜币244枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2652回复:7

AE的图层中图块的复制与粘贴

楼主#
更多 发布于:2005-08-07 00:03
在同一图层中的图块的复制与粘贴不会用,请多指教.如果能实现不同图层的最好!
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-08-08 15:26
<P>只是一个函数,参考一下,不过你说的单个和多个图层都能实现</P>
<P>'功能:复制地物<BR>Public Function CopyFeature() As Boolean<BR>    '得到选中的地物,如果没有则退出<BR>    '每次只复制一个地物<BR>    Dim ff_t_FeatureCursor As IFeatureCursor<BR>    Dim ff_t_pFeature As IFeature<BR>    If ff_m_CurLayer Is Nothing Then Exit Function<BR>    <BR>    <BR>    '获取选中的地物<BR>    Set ff_t_FeatureCursor = GetSelectedFeatures<BR>    If ff_t_FeatureCursor Is Nothing Then<BR>        MsgBox "请先选择要复制的地物!", vbExclamation + vbOKOnly, "警告"<BR>        CopyFeature = False<BR>        Exit Function<BR>    End If<BR>    '得到要显示节点的地物<BR>    Set ff_t_pFeature = ff_t_FeatureCursor.NextFeature<BR>    If ff_t_pFeature Is Nothing Then Exit Function<BR>    <BR>    '判断容器里是否有地物<BR>    If Not m_pCopyGeometry Is Nothing Then<BR>        If m_pCopyGeometry.Count > 0 Then<BR>            m_pCopyGeometry.RemoveAll<BR>        End If<BR>    Else<BR>        Set m_pCopyGeometry = New esriSystem.Array<BR>    End If<BR>    While Not ff_t_pFeature Is Nothing<BR>        '复制地物<BR>        m_pCopyGeometry.Add ff_t_pFeature.ShapeCopy<BR>        Set ff_t_pFeature = ff_t_FeatureCursor.NextFeature<BR>    Wend<BR>    CopyFeature = True<BR>End Function</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
gaoguosheng
路人甲
路人甲
  • 注册日期2005-08-02
  • 发帖数38
  • QQ18087249
  • 铜币244枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-08-08 17:32
太感谢了,我试试
举报 回复(0) 喜欢(0)     评分
木白林
路人甲
路人甲
  • 注册日期2004-03-19
  • 发帖数319
  • QQ
  • 铜币824枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-08-09 09:46
太牛了
心情卡片 一起分享...
举报 回复(0) 喜欢(0)     评分
gaoguosheng
路人甲
路人甲
  • 注册日期2005-08-02
  • 发帖数38
  • QQ18087249
  • 铜币244枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-08-12 09:38
我不知道怎么粘贴,怎么办?
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
5楼#
发布于:2005-08-13 10:11
<P>还是自己写写了,这个给个参考,下面的函数还调用createfeature等函数,其实你说的paste就是建立一个新的对象了</P>
<P>'功能:粘贴复制的地物<BR>Public Sub PasteFeature()<BR>    If m_pCopyGeometry Is Nothing Then<BR>        MsgBox "没有可粘贴的地物!", vbCritical, "警告"<BR>        Exit Sub<BR>    End If<BR>    <BR>    Dim ff_m_FeatureLayer As IFeatureLayer<BR>    Dim ff_m_FeatureClass As IFeatureClass<BR>  <BR>    If ff_m_CurLayer Is Nothing Then Exit Sub<BR>    Set ff_m_FeatureLayer = ff_m_CurLayer<BR>    Set ff_m_FeatureClass = ff_m_FeatureLayer.FeatureClass<BR>    If ff_m_FeatureClass Is Nothing Then Exit Sub<BR>    Dim pGeo As IGeometry<BR>    Set pGeo = m_pCopyGeometry.Element(0)<BR>    '判断要粘贴的地物是否与当前编辑图层的Shape类型一致<BR>    If pGeo.GeometryType <> ff_m_FeatureClass.ShapeType Then<BR>        MsgBox "要粘贴的地物和目标层的类型不匹配", vbInformation, "警告"<BR>        Exit Sub<BR>    End If<BR>    <BR>    '清除被选中的地物<BR>    ff_m_Map.ClearSelection<BR>    Set ff_m_ActiveView = ff_m_Map<BR>    ff_m_ActiveView.Refresh<BR>    <BR>    '创建Feature<BR>    Dim i As Integer<BR>    For i = 0 To m_pCopyGeometry.Count - 1<BR>        Set pGeo = m_pCopyGeometry.Element(i)<BR>        CreateFeature pGeo<BR>    Next i<BR>    <BR>End Sub</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
wqx197
路人甲
路人甲
  • 注册日期2005-07-24
  • 发帖数20
  • QQ
  • 铜币153枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2005-08-14 11:37
<P>厉害</P>
举报 回复(0) 喜欢(0)     评分
gaoguosheng
路人甲
路人甲
  • 注册日期2005-08-02
  • 发帖数38
  • QQ18087249
  • 铜币244枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2005-08-15 09:20
太感谢GIS老兄,希望以后多多指教
举报 回复(0) 喜欢(0)     评分
游客

返回顶部