乐筑天下

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

[编程交流] 使dimlinear关联

[复制链接]

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 18:32:20 | 显示全部楼层 |阅读模式
我正在尝试编写一个lisp例程,该例程可以标注与设计的水平和垂直偏差:
 
(定义c:ddxy()
(setq p1(getpoint“测量点:”))
(setq p2(getpoint“设计点:”))
(命令“dimlinear”p1 p2“U v”pause)
(命令“dimlinear”p1 p2“U h”暂停)
)
 
p1通常是点对象
p2通常是直线的终点或圆心
 
运行此lisp时,创建的第一个尺寸标注与两个对象正确关联,但第二个尺寸标注是非关联的。
 
当然,我可以手动创建每个单独的水平和垂直维度,但我希望将工作量减半,让lisp为我完成重复的操作!
 
有人能帮忙解决这个问题吗?我尝试过使用osnap设置,并在创建第二个dim之前将第一个dim发送到后面,但没有效果。
 
谢谢
 
抢劫
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-5 18:39:57 | 显示全部楼层
有人知道如何在不使用命令功能的情况下创建关联标注吗?
 
 
  1. (defun c:test ( / p1 p2 ang )
  2.    (if
  3.        (and (setq p1 (getpoint "\nSpecify first point of dimension: "))
  4.            (setq p2 (getpoint p1 "\nSpecify second point of dimension: "))
  5.        )
  6.        (vla-adddimrotated
  7.            (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
  8.            (vlax-3d-point p1) (vlax-3d-point p2)
  9.            (vlax-3d-point (polar p1 (+ (* 0.5 pi) (setq ang (angle p1 p2))) (distance p1 p2)))
  10.            ang
  11.        )
  12.    ) (princ)
  13. )
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-5 18:46:01 | 显示全部楼层
有人能帮我们吗?
回复

使用道具 举报

1

主题

597

帖子

599

银币

初来乍到

Rank: 1

铜币
2
发表于 2022-7-5 18:47:25 | 显示全部楼层
将sysvar DIMASSOC设置为2,所有新DIM将默认为关联。不确定这是否相关,但不要启用节点对象捕捉,除非希望DIM彼此关联,而不是对象。绘制的最后一个对象(通常是尺寸标注)位于顶部,因此这是您将遇到的第一个捕捉。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-5 18:56:09 | 显示全部楼层
在lisp中创建尺寸时,这不起作用(除非使用命令函数)。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:00:22 | 显示全部楼层
您需要构建适当的扩展字典。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-5 19:02:52 | 显示全部楼层
我走的方向对吗?
 
  1. (vla-AddObject dict "ACDBVARIABLEDICTIONARY" "AcDbDictionary")

 
 
 
编辑:
 
我想扩大规模。在我找到这个之前进行研究时(见下文)。我想我必须制作Dimassoc并将其添加到维度扩展字典中。
 
AcDbVariableDictionary CANNOSCALE CMLEADERSTYLE CTABLESTYLE CVIEWDETAILSTYLE CVIEWSECTIONSTYLE DIMASSOC HIDETEXT LAYEREVAL LAYERNOTIFY
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-5 19:07:54 | 显示全部楼层
Soooo,这是我的方法,但没有奏效。
 
  1. (setq dic (handent (vla-get-handle (vla-getextensiondictionary dim))))
  2. ; blck = block that the dimension is pointing to
  3. ; inobj = inside object the snap point is pointing to
  4. ; inobj2 = inside object the snap point is pointing to
  5. (setq da
  6. (entmakex
  7. (list
  8.    (cons 0 "DIMASSOC")
  9.    (cons 330 dic)
  10.    (cons 100 "AcDbDimAssoc")
  11.    (cons 330 dim)
  12.    (cons 90 3)
  13.    (cons 70 0)
  14.    (cons 71 0)
  15.    (cons 1 "AcDbOsnapPointRef")
  16.    (cons 72 1)
  17.    (cons 331 blck)
  18.    (cons 331 inobj)
  19.    (cons 73 2)
  20.    (cons 91 3)
  21.    (cons 40 1.0)
  22.    (cons 10 '(0.0 0.0 2.0e+050))
  23.    (cons 75 0)
  24.    (cons 1 "AcDbOsnapPointRef")
  25.    (cons 331 blck)
  26.    (cons 331 inobj2)
  27.    (cons 72 1)
  28.    (cons 73 2)
  29.    (cons 91 3)
  30.    (cons 40 1.0)
  31.    (cons 10 '(0.0 0.0 2.0e+050))
  32.    (cons 75 0)
  33. )
  34. ))
  35. (entmod (append (entget dic)(list (cons 3 "ACAD_DIMASSOC") (cons 360 da))))
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-5 19:16:44 | 显示全部楼层
它说,当线路被修改时,关联但从不反应。。。
193225mdurxdfvrmluvdre.jpg
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-5 19:19:12 | 显示全部楼层
李,你知道这本书可能在其他什么词典下吗?如果有帮助的话,我可以发布一个更新的lsp。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:28 , Processed in 1.014883 second(s), 74 queries .

© 2020-2025 乐筑天下

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