乐筑天下

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

[编程交流] 使用一个块生成多个

[复制链接]

3

主题

16

帖子

13

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:28:56 | 显示全部楼层
以下代码假设为钟面。dwg块与当前图形位于同一文件夹中:
 
  1. Option Explicit
  2. Public Sub InsertClock()
  3.    Dim objBRef As AcadBlockReference
  4.    Dim varPoint As Variant
  5.    Dim intMin As Integer
  6.    Dim intHour As Integer
  7.    Dim BProps As Variant
  8.    Dim tmpProp As AcadDynamicBlockReferenceProperty
  9.    Dim intI As Integer
  10.    'ask user for where to place the clock, the prompt goes
  11.    '   through the command window
  12.    varPoint = ThisDrawing.Utility.GetPoint(, "click where you want the clock")
  13.    'ask for time
  14.    intHour = ThisDrawing.Utility.GetInteger(vbCrLf & "Hour: ")
  15.    intMin = ThisDrawing.Utility.GetInteger(vbCrLf & "Minute: ")
  16.    'insert block (the ones and zeros are for scale and rotation)
  17.    Set objBRef = ThisDrawing.ModelSpace.InsertBlock(varPoint, "ClockFace.dwg", 1, 1, 1, 0)
  18.    'get properties of the block
  19.    BProps = objBRef.GetDynamicBlockProperties
  20.    'go find minute and hour properties and change them
  21.    'the minute rotation property is called 'Angle'
  22.    'the hour rotation property is called 'Angle1'
  23.    For intI = LBound(BProps) To UBound(BProps)
  24.        'grab one property
  25.        Set tmpProp = BProps(intI)
  26.        'check for minute hand
  27.        If tmpProp.PropertyName = "Angle" Then
  28.            tmpProp.Value = Math.Atn(1) * 4 - (CDbl(intMin) / 60) * 2 * Math.Atn(1) * 4 - 2 * Math.Atn(1)
  29.        End If
  30.        'check for hour hand
  31.        If tmpProp.PropertyName = "Angle1" Then
  32.            tmpProp.Value = Math.Atn(1) * 4 - (CDbl(intHour) / 12) * 2 * Math.Atn(1) * 4 - 2 * Math.Atn(1)
  33.        End If
  34.    Next intI
  35.    'update block
  36.    objBRef.Update
  37. End Sub

 
好的,现在我想修改一下这段代码,我只是不知道语法。我希望当用户选择一个点插入时钟时,时钟的虚线版本沿着光标跟随。你知道我的意思吗?它使它变得专业,当你需要查看时钟需要去哪里时,它变得更容易。
 
谢谢
~老虎1337
回复

使用道具 举报

3

主题

16

帖子

13

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:33:25 | 显示全部楼层
如果我能把“Success”拼写对的话会有帮助
回复

使用道具 举报

48

主题

1073

帖子

1043

银币

后起之秀

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

铜币
238
发表于 2022-7-6 23:36:32 | 显示全部楼层
很不错的。我要花更长的时间才能到达那里!
这是一个我从未解决过的问题。有一场讨论正在进行中http://www.cadtutor.net/forum/showthread.php?50613-使用LISP&,在循环时重复插入块。虽然我还没有真正读过别人说的话。
回复

使用道具 举报

3

主题

16

帖子

13

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:39:34 | 显示全部楼层
哈哈,谢谢戴夫!
 
这是我第一次使用动态块。你能给我简单介绍一下你是如何把这些角度参数添加到这两条线上的吗?我试图在我已经创建的另一个块上复制相同的东西。然而,我在实际应用角度参数时把事情搞砸了。
 
提前感谢,
老虎1337
回复

使用道具 举报

48

主题

1073

帖子

1043

银币

后起之秀

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

铜币
238
发表于 2022-7-6 23:43:19 | 显示全部楼层
我不经常使用旋转,所以这对我来说也很容易出错。在本例中,每只手需要一个参数和一个动作。我发现组合的很难使用,所以一次只使用一个参数|动作。我只是添加了以圆心为基点的参数,并选择了12点钟的位置(我想)作为其位置。然后我进入属性,使其具有0个夹点。调用旋转动作,选择旋转参数并选择垂直线,我想就是这样。以类似的方式重复时针。
回复

使用道具 举报

3

主题

16

帖子

13

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:46:56 | 显示全部楼层
是的,成功了
回复

使用道具 举报

3

主题

16

帖子

13

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:50:51 | 显示全部楼层
叹气我做错了什么事,我想不出来。
 
好的,这就是我要做的。我的画上有一系列的物体。我高亮显示所有这些,并使用WBLOCK将其保存为块dwg。现在,在这个方块上有两个箭头(你知道那些有箭头和圆圈的箭头)。我通过进入块编辑器并在这些半径不同的箭头的中心应用旋转参数来赋予这个块动态属性(相信我,我已经尝试了很多不同的组合)好的,问题是,一旦我运行程序(与我之前发布的脚本相同),大部分块看起来都很好。除此之外,一个或两个箭头出现在屏幕的某个地方。我说一个或两个,因为这取决于我首先创建块的方式。每次我从头开始都会发生不同的事情。我在拔头发。我肯定做错了什么事,但我想不出来。样本时钟绘图工作完美!
 
~老虎1337
回复

使用道具 举报

48

主题

1073

帖子

1043

银币

后起之秀

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

铜币
238
发表于 2022-7-6 23:52:45 | 显示全部楼层
张贴你的区块,有人会看到它
回复

使用道具 举报

3

主题

16

帖子

13

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:56:30 | 显示全部楼层
这是块:
 
模块1.dwg
回复

使用道具 举报

3

主题

16

帖子

13

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:57:40 | 显示全部楼层
似乎发生的事情是,不仅箭头围绕自身旋转,而且围绕图形中的其他点旋转。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 05:42 , Processed in 1.001240 second(s), 70 queries .

© 2020-2025 乐筑天下

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