乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 178|回复: 13

VBA C3D 2011通过多段线对齐在屏幕上选择

[复制链接]

14

主题

57

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2011-2-27 13:05:07 | 显示全部楼层 |阅读模式
需要一些帮助通过屏幕上的折线选择在2011年添加对齐。
常规崩溃设置AlignmentStyles.Item(0)and.AlignmentLabelStyleSets.Item(0)
我在绘图中有样式和标签样式集。我认为. Item(0)将获得第一个对齐样式和标签集
目标是通过选择现有的多段线来创建和绘制不属于站点的对齐方式。
感谢您的任何提示,链接
John Coon
Private SubCommandButton4_Click()
UserForm1.hide
'Publicg_oCivilAppAs AeccApplication
'Publicg_oDocumentAs AeccDocument
'Publicg_oAeccDatabaseAs AeccDatabase
Dim对齐作为Aecc校准
Dim Alignment As Aecc的对齐
Dim Align As Aecc的对齐方式
Dim对齐方式
Dim对齐方式
LabelStyleSet As Aecc校正mentLabelStyleSet
设置对齐方式=g_oDocument.AlignmentStyles.Item(0)
'"_Proposed"
设置对齐方式LabelStyleSet=g_oDocument.AlignmentLabelStyleSets.Item(0)
'("_No标签")
DimoPoly As AcadLWPolyline
Dim pt As Variant
Dim obj As AcadObject
ThisDrawing.Utility.GetEntityobj, pt,"选择要转换为对齐方式的折线:"
如果TypeOf obj是AcadLWPolyline则
设置oPoly=obj
Else
MsgBox"Selected Entity is not a Pline!"
结束如果
Dim dPolyObjId As Long
dPolyObjId=oPoly.ObjectID
sLayerName="UsingTheAddFromPolylineMethod"
sLayerName="0"
设置对齐方式=oAlignmentsSiteless.Add(sLayerName, sLayerName,对准样式,对齐样式标签样式集,真,真
AlignmentsSiteless.AddFromPolyline

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2011-2-27 21:18:15 | 显示全部楼层
这在2010年对我有用,约翰。我没有/不会在2011年安装VBA....听说它在64位版本上速度太慢了,所以对我来说没有VBA。
  1. Public Sub aligntest()
  2.     If (GetCivilObjects() = False) Then
  3.         MsgBox "Error accessing Civil 3D!"
  4.         Exit Sub
  5.     End If
  6. Dim AlignmentsSiteless As AeccAlignmentsSiteless
  7. Dim Alignment As AeccAlignments
  8. Dim Align As AeccAlignment
  9. Dim AlignmentStyle As AeccAlignmentStyle
  10. Dim AlignmentLabelStyleSet As AeccAlignmentLabelStyleSet
  11. Set AlignmentStyle = g_oDocument.AlignmentStyles.Item(0)
  12. '"_Proposed"
  13. Set AlignmentLabelStyleSet = g_oDocument.AlignmentLabelStyleSets.Item(0)
  14. '("_No Labels")
  15. Dim sAlignName As String
  16. Dim sLayerName As String
  17.      
  18. Dim oPoly As AcadLWPolyline
  19. Dim pt As Variant
  20. Dim obj As AcadObject
  21. ThisDrawing.Utility.GetEntity obj, pt, "Select the Polyline to convert to an Alignment :"
  22. If TypeOf obj Is AcadLWPolyline Then
  23. Set oPoly = obj
  24. Else
  25. MsgBox "Selected Entity is NOT a Pline ! "
  26. End If
  27.       
  28. Dim dPolyObjId As Long
  29. dPolyObjId = oPoly.ObjectID
  30.         
  31. sAlignName = "UsingTheAddFromPolylineMethod"
  32. sLayerName = "0"
  33.             
  34. Set Align = g_oDocument.AlignmentsSiteless.AddFromPolyline(sAlignName, sLayerName, dPolyObjId, AlignmentStyle, AlignmentLabelStyleSet, True, True)
  35.    
  36. End Sub

回复

使用道具 举报

14

主题

57

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2011-2-28 08:56:39 | 显示全部楼层
Jeff,
这很奇怪,我运行了您的示例,它的工作效果非常好。我将相同的代码粘贴到同一项目中的按钮上,添加用户表单隐藏并显示
,但我在这里得到一个错误:设置对齐样式=g_oDocument.AlignmentStyles.Item(0),与之前相同。
感谢您的帮助.........我在不同的版本中做了一些检查,这是一个半小时的项目,用于标记一些标记,结果不止如此。
vba,我仍在开发dot net,它正在变得更好,但我认为这将在vba中完成一项简单的任务,速度更快,事实证明,鉴于我正在研究它的时间,我可能会尝试它。
John
Private SubCommandButton3_Click()
UserForm1.Hide
如果(Get文明对象()=False)那么
MsgBox“错误民事访问3D!”
Exit Sub
end if
暗淡的对齐方式作为Aecc对齐方式作为Aecc对齐方式
暗淡的对齐方式作为Aecc对齐方式
暗淡的对齐方式标签样式设置为Aecc对齐方式标签样式设置
设置对齐方式=g_oDocument.AlignmentStyles.Item(0)
'"_Proposed"
设置对齐方式标签样式设置=g_oDocument.AlignmentLabelStyleSets.Item(0)
'("_No标签")
暗淡的对齐方式名称作为字符串
暗淡的对齐方式名称作为字符串
暗淡的oPoly As AcadLWPolyline
暗淡的pt As Variant
暗淡的obj As AcadObject
ThisDrawing.Utility.GetEntityobj, pt,"选择要转换为对齐方式的折线:"
如果TypeOf obj"
结束如果
暗淡dPolyObjId as Long
dPolyObjId=oPoly.ObjectID
sLayerName="UsingTheAddFromPolylineMethod"
sLayerName="0"
设置对齐=g_oDocument.AlignmentsSiteless.AddFromPolyline(sLayerName, sLayerName, dPolyObjId,校正样式,对齐标签样式集,真,真)
UserForm1.Show
结束子
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2011-2-28 10:54:13 | 显示全部楼层
你能把DVB上传给约翰吗?我刚刚创建了一个新项目,添加了一个带有3个按钮的表单,使用了这段代码,效果很好。
回复

使用道具 举报

14

主题

57

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2011-2-28 12:16:21 | 显示全部楼层
杰夫,
这是我正在使用的dwg。您的示例在模块2中,我将其粘贴到按钮中并得到错误。
约翰
回复

使用道具 举报

14

主题

57

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2011-2-28 12:17:15 | 显示全部楼层
抱歉错过了vba样本
回复

使用道具 举报

14

主题

57

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2011-2-28 12:22:46 | 显示全部楼层
Jeff,
我得到这个错误是因为我在通用声明中加载了它。
Option Explicit
Public g _ oCivilApp As AeccApplication
Public g _ o document As AeccDocument
Public g _ oaecc database As AeccDatabase
Public g _ oExcelBook As Workbook
Public g _ oexcel app As Excel。应用程序
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2011-2-28 19:00:07 | 显示全部楼层
这是否意味着它现在有效?
如果您打算使用对齐方式,我看到一个主要问题.....您正在将此用于您的接口对象:
“AeccXUiRoadway.AeccRoadwayApplication.6.0”
首先,2011年使用8.0版本,而不是6.0。但是,更重要的是,道路应用适用于道路对象。您需要 AeccXUiLand.AeccApplication 作为基本对象。
回复

使用道具 举报

38

主题

1350

帖子

6

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1502
发表于 2011-2-28 19:06:01 | 显示全部楼层
问:
为什么不直接使用 C3D 中已存在的“从对象创建对齐方式”命令,然后在命令提示符下选择折线来执行此操作?
您可以执行此操作,并且不会将生成的对齐方式作为任何站点的一部分。
回复

使用道具 举报

14

主题

57

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2011-3-1 07:56:38 | 显示全部楼层
杰夫,希格斯
是的,它现在工作正常。我只需要添加一些东西来保存或删除现有的折线。
“AeccXUiRoadway。AeccRoadwayApplication.6.0“这是我在工作中使用的”。AeccRoadwayApplication.8.0 "是我在家里使用的,抱歉

当我从AeccXUiRoadway更换时。aeccroadway应用于AeccXUiLand。我现在得到一个错误。我会在午餐时间检查一下,看看我是否能解决这个问题。
Higgs,
我知道我可以从多段线创建路线,它可以绘制着色的虚线边缘条纹,并从保存到excel或cvs或从现有多段线创建的现有路线为承包商获取桩号偏移布局。这是一个标记虚线中心线边缘条纹的快速程序。最终获取特定图层上的所有中心线多边形,创建路线,绘制标记,最后删除新路线。或者,它将获取所有选定的对齐,并在不删除对齐的情况下执行相同的操作。
在我能让. net为我工作之前,我不会对VBA的任何新东西投入那么多。我知道我需要花更多的时间在网络上,但是这很难,你知道,和VBA在一起的几个小时里,我可以得到一些我可以用的东西,而在网络上可能要花我一个星期的时间。
一如既往地感谢杰夫。
约翰
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 03:13 , Processed in 1.208966 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表