jcoon 发表于 2011-2-27 13:05:07

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

需要一些帮助通过屏幕上的折线选择在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
**** Hidden Message *****

Jeff_M 发表于 2011-2-27 21:18:15

这在2010年对我有用,约翰。我没有/不会在2011年安装VBA....听说它在64位版本上速度太慢了,所以对我来说没有VBA。
Public Sub aligntest()
    If (GetCivilObjects() = False) Then
      MsgBox "Error accessing Civil 3D!"
      Exit Sub
    End If
Dim AlignmentsSiteless As AeccAlignmentsSiteless
Dim Alignment As AeccAlignments
Dim Align As AeccAlignment
Dim AlignmentStyle As AeccAlignmentStyle
Dim AlignmentLabelStyleSet As AeccAlignmentLabelStyleSet
Set AlignmentStyle = g_oDocument.AlignmentStyles.Item(0)
'"_Proposed"
Set AlignmentLabelStyleSet = g_oDocument.AlignmentLabelStyleSets.Item(0)
'("_No Labels")
Dim sAlignName As String
Dim sLayerName As String
   
Dim oPoly As AcadLWPolyline
Dim pt As Variant
Dim obj As AcadObject
ThisDrawing.Utility.GetEntity obj, pt, "Select the Polyline to convert to an Alignment :"
If TypeOf obj Is AcadLWPolyline Then
Set oPoly = obj
Else
MsgBox "Selected Entity is NOT a Pline ! "
End If
      
Dim dPolyObjId As Long
dPolyObjId = oPoly.ObjectID
      
sAlignName = "UsingTheAddFromPolylineMethod"
sLayerName = "0"
            
Set Align = g_oDocument.AlignmentsSiteless.AddFromPolyline(sAlignName, sLayerName, dPolyObjId, AlignmentStyle, AlignmentLabelStyleSet, True, True)
   
End Sub

jcoon 发表于 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
结束子

Jeff_M 发表于 2011-2-28 10:54:13

你能把DVB上传给约翰吗?我刚刚创建了一个新项目,添加了一个带有3个按钮的表单,使用了这段代码,效果很好。

jcoon 发表于 2011-2-28 12:16:21

杰夫,
这是我正在使用的dwg。您的示例在模块2中,我将其粘贴到按钮中并得到错误。
约翰

jcoon 发表于 2011-2-28 12:17:15

抱歉错过了vba样本

jcoon 发表于 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。应用程序

Jeff_M 发表于 2011-2-28 19:00:07

这是否意味着它现在有效?
如果您打算使用对齐方式,我看到一个主要问题.....您正在将此用于您的接口对象:
“AeccXUiRoadway.AeccRoadwayApplication.6.0”
首先,2011年使用8.0版本,而不是6.0。但是,更重要的是,道路应用适用于道路对象。您需要 AeccXUiLand.AeccApplication 作为基本对象。

mjfarrell 发表于 2011-2-28 19:06:01

问:
为什么不直接使用 C3D 中已存在的“从对象创建对齐方式”命令,然后在命令提示符下选择折线来执行此操作?
您可以执行此操作,并且不会将生成的对齐方式作为任何站点的一部分。

jcoon 发表于 2011-3-1 07:56:38

杰夫,希格斯
是的,它现在工作正常。我只需要添加一些东西来保存或删除现有的折线。
“AeccXUiRoadway。AeccRoadwayApplication.6.0“这是我在工作中使用的”。AeccRoadwayApplication.8.0 "是我在家里使用的,抱歉

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