乐筑天下

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

[编程交流] 创建多行

[复制链接]

34

主题

105

帖子

91

银币

后起之秀

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

铜币
224
发表于 2022-7-6 17:28:05 | 显示全部楼层 |阅读模式
你好
 
有谁能告诉我一个使用vba绘制多行的好例子吗?
 
我查看了帮助文件,但似乎没有太多信息?
 
干杯
 
Col公司
回复

使用道具 举报

1

主题

56

帖子

80

银币

初来乍到

Rank: 1

铜币
1
发表于 2022-7-6 17:34:49 | 显示全部楼层
将点作为XYZ集进行种子设定,因此直线“主要”部分的点数将是一个由3个集组成的数组:主线上的点将为第一个点的索引0,1,2,第二个点的索引3,4,5,第三个点的索引6,7,8。等等等等。
 
对正是要偏移的边。acTop和acBottom是偏移“主线”的“边”:acZero基本上是从点中间的假想线偏移两条线。
 
MLineScale控制偏移量。
 
帮助中提供的示例代码帮助不大。
取样本代码,删除除索引中的点以外的所有点
0-8,并使其具有以下值:
0=0. 1=0. 2=0.
3=0. 4=-10. 5=0.
6=10. 7=-10. 8=0
 
这基本上会形成一个“L”形,不同于样本源提供的重叠垃圾。
 
然后使用对齐和多尺度属性;那么你应该掌握诀窍了。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 17:42:35 | 显示全部楼层
嗨,上校
不确定你的意思,但是
希望这会有所帮助,只需在屏幕上选择点即可
 
  1. Public Sub DrawMLineDynamicaly()
  2. ' partially borrowed from Tony Tanzillo's 'Getpoint' function
  3. Dim pickPt As Variant
  4. Dim mlCoords() As Double
  5. Dim i As Integer
  6. Dim oMline As AcadMLine
  7. i = 0
  8. On Error Resume Next
  9. pickPt = ThisDrawing.Utility.GetPoint(, vbCr & "First point: ")
  10. If Err = 0 Then
  11.    ReDim mlCoords(2)
  12.    mlCoords(i) = pickPt(0): mlCoords(i + 1) = pickPt(1): mlCoords(i + 2) = 0#
  13.    Do Until Err.Number <> 0
  14.        i = i + 3
  15.        pickPt = ThisDrawing.Utility.GetPoint(pickPt, vbCr & "Pick next point or press Enter to stop: ")
  16.        ReDim Preserve mlCoords(UBound(mlCoords) + 3)
  17.        mlCoords(i) = pickPt(0): mlCoords(i + 1) = pickPt(1): mlCoords(i + 2) = 0#
  18.        If oMline Is Nothing Then
  19.            Set oMline = ThisDrawing.ModelSpace.AddMLine(mlCoords)
  20.            oMline.Update
  21.        Else
  22.            oMline.Coordinates = mlCoords
  23.            oMline.Update
  24.        End If
  25.    Loop
  26. End If
  27. End Sub

 
~'J'~
回复

使用道具 举报

34

主题

105

帖子

91

银币

后起之秀

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

铜币
224
发表于 2022-7-6 17:46:50 | 显示全部楼层
Fixo,
 
谢谢你。我试图创建的是您发布的代码的一个版本,但允许用户输入尺寸、宽度、高度和托架数量,并将最终产品设置为幕墙屏幕。
 
谢谢你的帮助。
 
干杯
 
col公司
回复

使用道具 举报

34

主题

105

帖子

91

银币

后起之秀

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

铜币
224
发表于 2022-7-6 17:50:16 | 显示全部楼层
罗西,
谢谢你的解释。你没提mlinestyle?我从帮助中看到它是只读的?
 
我试过了
  1. MyObjMLine.stylename = “MLineStyleName”

 
它返回了一个错误。这是否意味着不能用vba更改,而必须手动更改?
干杯
 
Col公司
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 17:54:06 | 显示全部楼层
Col,请看一下帮助:
 
来自帮助
样式名
对于MLine对象,此属性为只读
 
要设置所需的MlineStyle,请使用:
  1. ThisDrawing.SetVariable "CMLSTYLE", "MyStyleName" '<--style name

 
~'J'~
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 17:59:14 | 显示全部楼层
Fixo,
 
非常感谢。它运行得非常好。
 
我会努力进一步发展。
 
非常感谢,
 
Col公司
回复

使用道具 举报

34

主题

105

帖子

91

银币

后起之秀

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

铜币
224
发表于 2022-7-6 18:03:30 | 显示全部楼层
不客气
干杯
 
~'J'~
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 18:09:19 | 显示全部楼层
回复

使用道具 举报

34

主题

105

帖子

91

银币

后起之秀

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

铜币
224
发表于 2022-7-6 18:14:17 | 显示全部楼层
Fixo,
 
jpeg attached. it is a very simple example, the amount of columns/ rows could 10 or 100, for eg.
 
Im sure i can use you example, i just need to work out how to accept input from the command line and then work out the calculation required.
 
cheers,
 
col
182807djqlqj303310re30.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:30 , Processed in 0.442588 second(s), 74 queries .

© 2020-2025 乐筑天下

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