Lukijan 发表于 2022-7-6 22:28:15

“创建层”对话框

大家好!
 
我试图创建一个对话框来创建新的图层,我在谷歌上搜索了所有我能记住的东西,但什么都找不到。
 
设置newLayer=ThisDrawing。层。添加(“新层名称”)
 
应该创建新层,但如何定义线的颜色、重量或类型?
 
P、 我正在使用VB6。。。

flowerrobot 发表于 2022-7-6 22:37:22

陆吉健,
 
从不使用VB6,我只是猜测。
 

Set newLayer = ThisDrawing.Layers.Add("NameOfNewLayer")
newlayer.color = ...
newlayer.linetype =...

 
p、 如果你在写新代码,为什么不使用VBA或vb呢。网

Lukijan 发表于 2022-7-6 22:50:21

是的,但如何制作调色板?我正在制作一个对话框,用户可以在其中为图层、线型等选择颜色。
 
无论如何,谢谢!

flowerrobot 发表于 2022-7-6 22:56:02

我最近研究了这个问题,当不使用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

BlackBox 发表于 2022-7-6 23:07:23

FWIW公司-
 
使用标准AutoCAD对话框选择颜色、线型和线宽。净额

Lukijan 发表于 2022-7-6 23:12:53

我用的是VB6,不是VB。净值:/

BlackBox 发表于 2022-7-6 23:23:02

 
FWIW-
 
Microsoft不再支持VBA,甚至Autodesk也只提供通过单独下载来访问VBAIDE的功能(它不再包含在AutoCAD产品中)。
 
大概在某个时候(在遥远的将来?),VBA将因损耗而消亡,除非谣传的“VBA7”发布。在决定在哪个平台上开发您的计划时,请记住这一点。如果Autodesk停止提供VBAIDE单独安装,您将陷入困境。
 
为此。NET和ObjectARX正迅速成为Autodesk的首选开发平台。
 
出于这个原因,您最好开始研究它,并访问许多新的API特性,这些特性只会暴露于。NET和ObjectARX。对于通常在VBA中执行的更简单例程,请考虑Visual LISP,因为它还使用ActiveX API。
 
HTH公司

BlackBox 发表于 2022-7-6 23:35:33

有关VBA支持的详细信息,请参阅Autodesk Microsoft Visual Basic for Applications模块常见问题解答:
 
页: [1]
查看完整版本: “创建层”对话框