乐筑天下

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

[编程交流] “创建层”对话框

[复制链接]

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 22:28:15 | 显示全部楼层 |阅读模式
大家好!
 
我试图创建一个对话框来创建新的图层,我在谷歌上搜索了所有我能记住的东西,但什么都找不到。
 
设置newLayer=ThisDrawing。层。添加(“新层名称”)
 
应该创建新层,但如何定义线的颜色、重量或类型?
 
P、 我正在使用VB6。。。
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
209
发表于 2022-7-6 22:37:22 | 显示全部楼层
陆吉健,
 
从不使用VB6,我只是猜测。
 
  1. Set newLayer = ThisDrawing.Layers.Add("NameOfNewLayer")
  2. newlayer.color = ...
  3. newlayer.linetype =  ...

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

使用道具 举报

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 22:50:21 | 显示全部楼层
是的,但如何制作调色板?我正在制作一个对话框,用户可以在其中为图层、线型等选择颜色。
 
无论如何,谢谢!
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
209
发表于 2022-7-6 22:56:02 | 显示全部楼层
我最近研究了这个问题,当不使用Arx时,这是相当困难的。
 
我确实有代码为颜色创建自定义组合框,但无法使线型位图工作。如果你愿意,我可以给你密码。
我提出的最佳解决方案是使用AutoCAD对话框。链接到datagrid表单。
 
颜色
  1.     Public Function UserGetColor() As Autodesk.AutoCAD.Colors.Color
  2.        Dim DiaLineWT As New Autodesk.AutoCAD.Windows.ColorDialog
  3.        Dim Result As System.Windows.Forms.DialogResult = DiaLineWT.ShowModal()
  4.        If Result = System.Windows.Forms.DialogResult.OK Then
  5.            Return DiaLineWT.Color
  6.        Else
  7.            Return Nothing
  8.        End If
  9.    End Function

线路重量
  1.   Public Shared Function UserGetLineWeight() As LineWeight
  2.        Dim DiaLineWT As New Autodesk.AutoCAD.Windows.LineWeightDialog
  3.        Dim Result As System.Windows.Forms.DialogResult = DiaLineWT.ShowModal()
  4.        If Result = System.Windows.Forms.DialogResult.OK Then
  5.            Return DiaLineWT.LineWeight
  6.        Else
  7.            Return Nothing
  8.        End If
  9.    End Function

 
线型
  1. Shared Function UserGetLineType() As LinetypeTableRecord
  2.        Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
  3.        Dim db As Database = doc.Database
  4.        Try
  5.            Using tr As Transaction = db.TransactionManager.StartTransaction
  6.                Dim ltt As LinetypeTable = tr.GetObject(db.LinetypeTableId, OpenMode.ForRead)
  7.                Dim ltID As ObjectId = ShowLineTypeDialog()
  8.                Dim ltr As LinetypeTableRecord = TryCast(tr.GetObject(ltID, OpenMode.ForRead, False), LinetypeTableRecord)
  9.                If ltr IsNot Nothing Then
  10.                    Return ltr
  11.                Else
  12.                    Return Nothing
  13.                End If
  14.            End Using
  15.        Catch ex As Autodesk.AutoCAD.Runtime.Exception
  16.            doc.Editor.WriteMessage(ex.Message)
  17.            Return Nothing
  18.        End Try
  19.    End Function
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:07:23 | 显示全部楼层
FWIW公司-
 
使用标准AutoCAD对话框选择颜色、线型和线宽。净额
回复

使用道具 举报

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:12:53 | 显示全部楼层
我用的是VB6,不是VB。净值:/
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 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公司
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:35:33 | 显示全部楼层
有关VBA支持的详细信息,请参阅Autodesk Microsoft Visual Basic for Applications模块常见问题解答:
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 11:46 , Processed in 0.357963 second(s), 68 queries .

© 2020-2025 乐筑天下

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