“创建层”对话框
大家好!我试图创建一个对话框来创建新的图层,我在谷歌上搜索了所有我能记住的东西,但什么都找不到。
设置newLayer=ThisDrawing。层。添加(“新层名称”)
应该创建新层,但如何定义线的颜色、重量或类型?
P、 我正在使用VB6。。。 陆吉健,
从不使用VB6,我只是猜测。
Set newLayer = ThisDrawing.Layers.Add("NameOfNewLayer")
newlayer.color = ...
newlayer.linetype =...
p、 如果你在写新代码,为什么不使用VBA或vb呢。网 是的,但如何制作调色板?我正在制作一个对话框,用户可以在其中为图层、线型等选择颜色。
无论如何,谢谢! 我最近研究了这个问题,当不使用Arx时,这是相当困难的。
我确实有代码为颜色创建自定义组合框,但无法使线型位图工作。如果你愿意,我可以给你密码。
我提出的最佳解决方案是使用AutoCAD对话框。链接到datagrid表单。
颜色
Public Function UserGetColor() As Autodesk.AutoCAD.Colors.Color
Dim DiaLineWT As New Autodesk.AutoCAD.Windows.ColorDialog
Dim Result As System.Windows.Forms.DialogResult = DiaLineWT.ShowModal()
If Result = System.Windows.Forms.DialogResult.OK Then
Return DiaLineWT.Color
Else
Return Nothing
End If
End Function
线路重量
Public Shared Function UserGetLineWeight() As LineWeight
Dim DiaLineWT As New Autodesk.AutoCAD.Windows.LineWeightDialog
Dim Result As System.Windows.Forms.DialogResult = DiaLineWT.ShowModal()
If Result = System.Windows.Forms.DialogResult.OK Then
Return DiaLineWT.LineWeight
Else
Return Nothing
End If
End Function
线型
Shared Function UserGetLineType() As LinetypeTableRecord
Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Try
Using tr As Transaction = db.TransactionManager.StartTransaction
Dim ltt As LinetypeTable = tr.GetObject(db.LinetypeTableId, OpenMode.ForRead)
Dim ltID As ObjectId = ShowLineTypeDialog()
Dim ltr As LinetypeTableRecord = TryCast(tr.GetObject(ltID, OpenMode.ForRead, False), LinetypeTableRecord)
If ltr IsNot Nothing Then
Return ltr
Else
Return Nothing
End If
End Using
Catch ex As Autodesk.AutoCAD.Runtime.Exception
doc.Editor.WriteMessage(ex.Message)
Return Nothing
End Try
End Function FWIW公司-
使用标准AutoCAD对话框选择颜色、线型和线宽。净额 我用的是VB6,不是VB。净值:/
FWIW-
Microsoft不再支持VBA,甚至Autodesk也只提供通过单独下载来访问VBAIDE的功能(它不再包含在AutoCAD产品中)。
大概在某个时候(在遥远的将来?),VBA将因损耗而消亡,除非谣传的“VBA7”发布。在决定在哪个平台上开发您的计划时,请记住这一点。如果Autodesk停止提供VBAIDE单独安装,您将陷入困境。
为此。NET和ObjectARX正迅速成为Autodesk的首选开发平台。
出于这个原因,您最好开始研究它,并访问许多新的API特性,这些特性只会暴露于。NET和ObjectARX。对于通常在VBA中执行的更简单例程,请考虑Visual LISP,因为它还使用ActiveX API。
HTH公司 有关VBA支持的详细信息,请参阅Autodesk Microsoft Visual Basic for Applications模块常见问题解答:
页:
[1]