乐筑天下

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

[编程交流] 组合Dim和Continue as

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 18:00:09 | 显示全部楼层 |阅读模式
你好
我通常使用dim工具设置dim线的初始位置,然后使用Continue模式继续该线。永远不明白为什么初始位置设置后,继续模式不会自动触发?
所以再说一次,
1、拾取dim工具
2、设置起点和终点位置
3、调暗换刀继续
4、拾取下一个点
有没有办法用柴油机编程?或者只能通过Lisp程序来完成?
 
谢谢
S
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:09:44 | 显示全部楼层
我不确定这是否是你想要的,但这是我在办公室使用的。我通常只画一个整体尺寸,然后用这个LISP在每个需要的点上拆分尺寸。如果出错,也可以使用它连接维度。
 
命令为DIMSPLIT和DIMJOIN。
 
  1. (defun C:DIMSPLIT (/ OBJ_PICK DIM_PICK DIM_ENT DIM_NODE1 DIM_NODE2 DIM_DEF
  2. DIM_POINT DIM_OBJ)
  3. ;(STORE)
  4. (command ".undo" "group")
  5. ;(setvar "osmode" 183)
  6. (setq DIM_PICK 1)
  7. (while (and DIM_PICK (/= OBJ_PICK "DIMENSION"))
  8.    (setq DIM_PICK (entsel "\nSelect Dimension: "))
  9.    (if DIM_PICK
  10.      (progn
  11.        (setq OBJ_PICK (cdr (assoc 0 (entget (car DIM_PICK))))
  12.              DIM_ENT (entget (car DIM_PICK))
  13.        )
  14.        (if (/= OBJ_PICK "DIMENSION") (prompt "\nThis is not a Dimension
  15. object."))
  16.      )
  17.    )
  18. )
  19. (if (or (= (cdr (assoc 70 DIM_ENT)) 32) ; IF ALIGNED OR ROTATED DIMENSION
  20.          (= (cdr (assoc 70 DIM_ENT)) 160)
  21.          (= (cdr (assoc 70 DIM_ENT)) 33)
  22.          (= (cdr (assoc 70 DIM_ENT)) 161)
  23.      )
  24.    (progn
  25.      (setq DIM_NODE1 (cdr (assoc 13 DIM_ENT))
  26.            DIM_NODE2 (cdr (assoc 14 DIM_ENT))
  27.            DIM_DEF (cdr (assoc 10 DIM_ENT))
  28.            DIM_POINT (getpoint "\nPick split point: ")
  29.      )
  30.      (if DIM_POINT
  31.        (progn
  32.          (if (or (= (cdr (assoc 70 DIM_ENT)) 33) (= (cdr (assoc 70
  33. DIM_ENT)) 161)) ; IF ALIGNED DIMENSION, RESET SPLIT POINT TO ALIGN BETWEEN
  34. NODES
  35.            (setq DIM_POINT (inters (polar DIM_POINT (angle DIM_DEF
  36. DIM_NODE2) 12.0) DIM_POINT DIM_NODE1 DIM_NODE2 nil))
  37.          )
  38.          (setq DIM_OBJ (subst (cons 13 DIM_POINT) (assoc 13 DIM_ENT)
  39. DIM_ENT))
  40.          (entmod DIM_OBJ)
  41.          (command "copy" DIM_PICK "" DIM_POINT DIM_POINT)
  42.          (setq DIM_ENT (entget (entlast))
  43.                DIM_OBJ (subst (cons 14 DIM_NODE1) (assoc 14 DIM_ENT)
  44. DIM_ENT)
  45.          )
  46.          (entmod DIM_OBJ)
  47.        )
  48.      )
  49.    )
  50.    (if DIM_PICK (prompt "\nThis is neither a Rotated nor an Aligned
  51. Dimension."))
  52. )
  53. (command ".undo" "end")
  54. ;(RESTORE)
  55. (princ)
  56. )
  57. (defun C:DIMJOIN (/ OBJ1_PICK DIM1_PICK DIM1_ENT DIM1_NODE1 DIM1_NODE2
  58. DIM1_OBJ
  59.                    OBJ2_PICK DIM2_PICK DIM2_ENT DIM2_NODE1 DIM2_NODE2
  60. DIMCASE)
  61. ;(STORE)
  62. (command ".undo" "group")
  63. ;(setvar "osmode" 183)
  64. (setq DIM1_PICK 1
  65.        DIM2_PICK 1
  66. )
  67. (while (and DIM1_PICK (/= OBJ1_PICK "DIMENSION"))
  68.    (setq DIM1_PICK (entsel "\nSelect First Dimension: "))
  69.    (if DIM1_PICK
  70.      (progn
  71.        (setq OBJ1_PICK (cdr (assoc 0 (entget (car DIM1_PICK))))
  72.              DIM1_ENT (entget (car DIM1_PICK))
  73.        )
  74.        (if (/= OBJ1_PICK "DIMENSION") (prompt "\nThis is not a Dimension
  75. object."))
  76.      )
  77.    )
  78. )
  79. (if (or (= (cdr (assoc 70 DIM1_ENT)) 32) ; IF ALIGNED OR ROTATED DIMENSION
  80.          (= (cdr (assoc 70 DIM1_ENT)) 160)
  81.          (= (cdr (assoc 70 DIM1_ENT)) 33)
  82.          (= (cdr (assoc 70 DIM1_ENT)) 161)
  83.      )
  84.    (progn
  85.      (if (= OBJ1_PICK "DIMENSION")
  86.        (progn
  87.          (while (and DIM2_PICK (/= OBJ2_PICK "DIMENSION"))
  88.            (setq DIM2_PICK (entsel "\nSelect Second Dimension: "))
  89.            (if DIM2_PICK
  90.              (progn
  91.                (setq OBJ2_PICK (cdr (assoc 0 (entget (car DIM2_PICK))))
  92.                      DIM2_ENT (entget (car DIM2_PICK))
  93.                )
  94.                (if (/= OBJ2_PICK "DIMENSION") (prompt "\nThis is not a
  95. Dimension object."))
  96.              )
  97.            )
  98.          )
  99.          (if (or (= (cdr (assoc 70 DIM2_ENT)) 32) ; IF ALIGNED OR ROTATED
  100. DIMENSION
  101.                  (= (cdr (assoc 70 DIM2_ENT)) 160)
  102.                  (= (cdr (assoc 70 DIM2_ENT)) 33)
  103.                  (= (cdr (assoc 70 DIM2_ENT)) 161)
  104.              )
  105.            (progn
  106.              (setq DIM1_NODE1 (cdr (assoc 13 DIM1_ENT))
  107.                    DIM1_NODE2 (cdr (assoc 14 DIM1_ENT))
  108.                    DIM2_NODE1 (cdr (assoc 13 DIM2_ENT))
  109.                    DIM2_NODE2 (cdr (assoc 14 DIM2_ENT))
  110.              )
  111.       (if (= (fix (distance DIM1_NODE2 DIM2_NODE1)) 0.0)
  112.         (setq DIM1_OBJ (subst (cons 14 DIM2_NODE2) (assoc 14 DIM1_ENT)
  113. DIM1_ENT) DIMCASE 1)
  114.       )
  115.       (if (= (fix (distance DIM1_NODE2 DIM2_NODE2)) 0.0)
  116.                (setq DIM1_OBJ (subst (cons 14 DIM2_NODE1) (assoc 14
  117. DIM1_ENT) DIM1_ENT) DIMCASE 2)
  118.       )
  119.       (if (= (fix (distance DIM1_NODE1 DIM2_NODE1)) 0.0)
  120.         (setq DIM1_OBJ (subst (cons 13 DIM2_NODE2) (assoc 13 DIM1_ENT)
  121. DIM1_ENT) DIMCASE 3)
  122.       )
  123.       (if (= (fix (distance DIM1_NODE1 DIM2_NODE2)) 0.0)
  124.         (setq DIM1_OBJ (subst (cons 13 DIM2_NODE1) (assoc 13 DIM1_ENT)
  125. DIM1_ENT) DIMCASE 4)
  126.       )
  127.       (if DIMCASE
  128.         (progn
  129.                  (entmod DIM1_OBJ)
  130.                  (command "erase" DIM2_PICK "")
  131.         )
  132.         (prompt "\nDimensions are not coincident.")
  133.              )
  134.              )
  135.            (if DIM2_PICK (prompt "\nThis is neither a Rotated nor an
  136. Aligned Dimension."))
  137.          )
  138.        )
  139.      )
  140.    )
  141.    (if DIM1_PICK (prompt "\nThis is neither a Rotated nor an Aligned
  142. Dimension."))
  143. )
  144. (command ".undo" "end")
  145. ;(RESTORE)
  146. (princ)
  147. )
  148. (defun C:DIMDIVIDE (/ OBJ_PICK DIM_PICK DIM_ENT DIM_NODE1 DIM_NODE2 DIM_DEF
  149. DIM_POINT DIM_OBJ)
  150. ;(STORE)
  151. (command ".undo" "group")
  152. ;(setvar "osmode" 183)
  153. (setq DIM_PICK 1)
  154. (while (and DIM_PICK (/= OBJ_PICK "DIMENSION"))
  155.    (setq DIM_PICK (entsel "\nSelect Dimension: "))
  156.    (if DIM_PICK
  157.      (progn
  158.        (setq OBJ_PICK (cdr (assoc 0 (entget (car DIM_PICK))))
  159.              DIM_ENT (entget (car DIM_PICK))
  160.        )
  161.        (if (/= OBJ_PICK "DIMENSION") (prompt "\nThis is not a Dimension
  162. object."))
  163.      )
  164.    )
  165. )
  166. (if (or (= (cdr (assoc 70 DIM_ENT)) 32) ; IF ALIGNED OR ROTATED DIMENSION
  167.          (= (cdr (assoc 70 DIM_ENT)) 160)
  168.          (= (cdr (assoc 70 DIM_ENT)) 33)
  169.          (= (cdr (assoc 70 DIM_ENT)) 161)
  170.      )
  171.    (progn
  172.      (if (not DIM_DIV) (setq DIM_DIV 2))
  173.      (initget 6)
  174.      (setq DIM_DIV (DEFNUM DIM_DIV "\nNumber of divisions"))
  175.      (if (and (= OBJ_PICK "DIMENSION") (> DIM_DIV 1))
  176.        (progn
  177.          (setq DIM_ENT (entget (car DIM_PICK))
  178.                DIM_NODE1 (cdr (assoc 13 DIM_ENT))
  179.                DIM_NODE2 (cdr (assoc 14 DIM_ENT))
  180.                DIM_DEF (cdr (assoc 10 DIM_ENT))
  181.                DIM_POINT (polar DIM_NODE1 (angle DIM_NODE1 DIM_NODE2) (/
  182. (distance DIM_NODE1 DIM_NODE2) DIM_DIV))
  183.                DIM_OBJ (subst (cons 14 DIM_POINT) (assoc 14 DIM_ENT)
  184. DIM_ENT)
  185.          )
  186.          (entmod DIM_OBJ)
  187.          (setq DIM_NODE2 (cdr (assoc 14 DIM_OBJ)))
  188.          (command "copy" DIM_PICK "" DIM_NODE1 DIM_NODE2)
  189.          (setq DIM_ENT (entget (entlast))
  190.                DIM_OBJ (subst (cons 10 DIM_DEF) (assoc 10 DIM_ENT) DIM_ENT)
  191.          )
  192.          (entmod DIM_OBJ)
  193.          (repeat (- DIM_DIV 2)
  194.            (command "copy" (ENTLAST) "" DIM_NODE1 DIM_NODE2)
  195.            (setq DIM_ENT (entget (entlast))
  196.                  DIM_OBJ (subst (cons 10 DIM_DEF) (assoc 10 DIM_ENT)
  197. DIM_ENT)
  198.            )
  199.            (entmod DIM_OBJ)
  200.          )
  201.        )
  202.      )
  203.    )
  204.    (if DIM_PICK (prompt "\nThis is neither a Rotated nor an Aligned
  205. Dimension."))
  206. )
  207. (command ".undo" "end")
  208. ;(RESTORE)
  209. (princ)
  210. )
  211. (defun C:DIMOFFSET (/ OBJ_PICK DIM_SIDE DIM_PICK DIM_ENT DIM_NODE1 DIM_NODE2
  212. DIM_INT DIM_DEF DIM_POINT DIM_OBJ)
  213. ;(STORE)
  214. (command ".undo" "group")
  215. (if (not DIM_OFFS) (setq DIM_OFFS (* 0.375 (getvar "dimscale"))))
  216. (initget 2)
  217. (setq DIM_OFFS (DEFDIST DIM_OFFS "Specify offset distance"))
  218. (setq DIM_PICK 1 OBJ_PICK 1)
  219. (while (and DIM_PICK (/= OBJ_PICK "DIMENSION"))
  220.    (setq DIM_PICK (entsel "\nSelect Dimension to offset: "))
  221.    (if DIM_PICK
  222.      (progn
  223.        (setq OBJ_PICK (cdr (assoc 0 (entget (car DIM_PICK))))
  224.              DIM_ENT (entget (car DIM_PICK))
  225.        )
  226.        (if (/= OBJ_PICK "DIMENSION") (prompt "\nThis is not a Dimension
  227. object."))
  228.      )
  229.    )
  230. )
  231. (if (or (= (cdr (assoc 70 DIM_ENT)) 32) ; IF ALIGNED OR ROTATED DIMENSION
  232.          (= (cdr (assoc 70 DIM_ENT)) 160)
  233.          (= (cdr (assoc 70 DIM_ENT)) 33)
  234.          (= (cdr (assoc 70 DIM_ENT)) 161)
  235.      )
  236.    (progn
  237.      (setq DIM_SIDE (getpoint "\nSpecify point on side to offset: "))
  238.      (if DIM_SIDE
  239.        (if (and (= OBJ_PICK "DIMENSION") (> DIM_OFFS 0))
  240.          (progn
  241.            (setvar "osmode" 0)
  242.            (setq DIM_ENT (entget (car DIM_PICK))
  243.                  DIM_NODE1 (cdr (assoc 13 DIM_ENT))
  244.                  DIM_NODE2 (cdr (assoc 14 DIM_ENT))
  245.                  DIM_DEF (cdr (assoc 10 DIM_ENT))
  246.                  DIM_INT (polar DIM_SIDE (angle DIM_DEF DIM_NODE2) 12.0)
  247.                  DIM_POINT (inters (polar DIM_DEF (+ (angle DIM_DEF
  248. DIM_NODE2) (DTR 90.0)) 12.0) DIM_DEF DIM_SIDE DIM_INT nil)
  249.            )
  250.            (command "copy" DIM_PICK "" DIM_NODE2 (polar DIM_NODE2 (angle
  251. DIM_POINT DIM_SIDE) DIM_OFFS))
  252.            (setq DIM_ENT (entget (entlast))
  253.                  DIM_OBJ (subst (cons 13 DIM_NODE1) (assoc 13 DIM_ENT)
  254. DIM_ENT)
  255.            )
  256.            (entmod DIM_OBJ)
  257.            (setq DIM_ENT (entget (entlast))
  258.                  DIM_OBJ (subst (cons 14 DIM_NODE2) (assoc 14 DIM_ENT)
  259. DIM_ENT)
  260.            )
  261.            (entmod DIM_OBJ)
  262.            (setq DIM_ENT (entget (entlast))
  263.                  DIM_DEF (polar DIM_DEF (angle DIM_POINT DIM_SIDE)
  264. DIM_OFFS)
  265.                  DIM_OBJ (subst (cons 10 DIM_DEF) (assoc 10 DIM_ENT)
  266. DIM_ENT)
  267.            )
  268.            (entmod DIM_OBJ)
  269.          )
  270.        )
  271.      )
  272.    )
  273.    (if DIM_PICK (prompt "\nThis is neither a Rotated nor an Aligned
  274. Dimension."))
  275. )
  276. (command ".undo" "end")
  277. ;(RESTORE)
  278. (princ)
  279. )
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 18:11:51 | 显示全部楼层
 
这是不错的选择谢谢
 
实际上,我希望变暗工具在设置变暗线位置后自动切换到“继续”工具
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:17:48 | 显示全部楼层
好的,我通常用DIMLINEAR,但是试着用DIM,为什么不在你画第一个维度后输入“C”?C代表继续,你可以无限期地继续。
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 18:25:04 | 显示全部楼层
 
你是指DCO。。。。
 
在我看来,
 
单击“起点”和“终点”后,下一个点应自动继续变暗。为什么不是这样?
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:32:26 | 显示全部楼层
 
嗯,我正在使用AutoCAD 2016。。。所以这可能是一个版本问题。这是我完成第一个维度后看到的
http://imgur.com/mOkEkdy
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 18:33:47 | 显示全部楼层
其防御版本问题,
im使用acad 2010,
 
Lisp程序是我唯一的原因?
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:40:49 | 显示全部楼层
 
可能但您可以尝试以下命令:“DIMCONTINUE”,看看在2010年是否有效。如果可以,您可以编写一个同时运行DIM命令和DIMCONTINUE命令的LISP,也可以创建一个快捷键来运行DIMCONTINUE命令
 
一、 e.将其设置为快捷方式^C^C\U Dimlinear\\\_dimcontinue;
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 18:48:07 | 显示全部楼层
 
我试过你的Lisp程序,
这是一个非常强大的尺寸概念,
但为什么它会在一点后停止?
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:53:36 | 显示全部楼层
 
公平地说,这是我使用的LISP,不是我写的。但我相信它会在一点之后停止,因为它创建了两条新的尺寸线,它不知道在哪里继续。你有没有试过我之前的建议,把DIMCONTINUE指定给一个快捷键?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 00:58 , Processed in 0.414181 second(s), 83 queries .

© 2020-2025 乐筑天下

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