乐筑天下

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

[编程交流] 将尺寸添加到矩形

[复制链接]

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:46:24 | 显示全部楼层 |阅读模式
大家好。。。。
 
我有两个物体。一个是矩形,另一个是交叉线。对于大量的矩形,我用手工标注。
 
尺寸到矩形角的距离基于“固定长度尺寸界线”长度。在我的示例文件中,使用长度是1’-1”。因此,维度到矩形点的距离是1’-1”。请看一下我的样本文件。
 
因此,请帮助使用任何代码或宏来最小化此过程,如选择所有矩形、交叉线和向所有矩形添加维度。
 
提前谢谢你。。。
快乐的编码。。
164627mtaz5oqxmx23x33v.png
示例(1)。图纸
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:55:28 | 显示全部楼层
你试过QDIM吗?
回复

使用道具 举报

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:59:31 | 显示全部楼层
Helo ronjonp,
谢谢你回复我的帖子。我也试过QDIM。不间断地获得整个尺寸。是否可以在选择对象的帮助下通过单击进行自动调暗?
 
非常感谢。
164628nbbev5firewxv11l.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:01:44 | 显示全部楼层
一些想法选择水平线,这得到了所有矩形以及交叉和垂直DIM。一次拾取垂直线1并进行水平运动。我有一些东西将自动调暗所有包括差距。
 
可能更简单的方法是在每个1和维度上绘制一条与拖曳线角度匹配的拖曳线,因此只需要一个例程,而不是计算水平和垂直方向。稍等片刻,选择2分。
 
我会想一想。
回复

使用道具 举报

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:09:48 | 显示全部楼层
谢谢你回复Bigal。。。正在寻找自动lisp。
非常感谢。
回复

使用道具 举报

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:12:17 | 显示全部楼层
大家好,各位大师,
在这里,我几乎无法通过搜索谷歌获得自动尺寸代码。。请按要求样式执行。。
  1. (defun C:AD ( / *error* a acdoc b c d dim e fd ht i o p1 p2 p3 pc pm rad sd space ss u opt isLine)
  2. (setq acDoc (vla-get-activedocument (vlax-get-acad-object))
  3.        space (vlax-get acDoc (if (= (getvar 'cvport) 1) 'paperspase 'modelspace))
  4.        dim (getvar 'dimstyle)
  5.        ht  (* 1.0 (getvar 'dimtxt) (if (= 0 (getvar 'dimanno)) (getvar 'dimscale) (/ 1.0 (getvar 'cannoscalevalue))))
  6.        )
  7. (vla-startundomark acDoc)
  8. (defun *error* (msg)
  9.    (and
  10.      msg
  11.      (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*BREAK*"))
  12.      (princ (strcat "\nADError: " msg))
  13.      )
  14.    (vla-endundomark acdoc)
  15.    (princ)
  16.    )
  17. (setq opt (mapcar
  18.              '(lambda (a b)
  19.                 (cond
  20.                   ((getdictvar "AD_otions" a))
  21.                   ((setdictvar "AD_otions" a b))
  22.                   )
  23.                 )
  24.              '("Linear" "Arc")
  25.              '("b0" "c0")
  26.              )
  27.        )
  28. (initget "Options")
  29. (if
  30.    (eq (getkword "\nPress enter to continue or [Options]: ") "Options")
  31.    (setq opt (AD_options opt))
  32.    )
  33. (if
  34.    (setq ss (ssget '((0 . "LWPOLYLINE,LINE,ARC"))))
  35.    (repeat (setq i (sslength ss))
  36.      (setq e (ssname ss (setq i (1- i)))
  37.            o (vlax-ename->vla-object e)
  38.            a (vlax-curve-getstartparam e)
  39.            c (vlax-curve-getendparam   e)
  40.            b nil
  41.            isLine (wcmatch (vla-get-Objectname o) "AcDbLine,AcDbArc")
  42.            )
  43.      (while (<= (setq b (if isLine (if b (1+ b) c) (1+ a))) c)
  44.        (setq p1 (vlax-curve-getpointatparam e a)
  45.              p2 (vlax-curve-getpointatparam e b)
  46.              u  (angle p1 p2)
  47.              pm (vlax-curve-getpointatparam e (/ (+ a b) 2.0))
  48.              sd (vlax-curve-getsecondderiv  e (/ (+ a b) 2.0))
  49.              rad (distance '(0 0 0) sd)
  50.              d  (cond (isLine) ((not (minusp (vla-getbulge o a)))))
  51.              pc (mapcar (if d '+ '-) pm sd)
  52.              p3 (if
  53.                   (or (equal rad 0.0 1e- (eq (cadr opt) "c2"))
  54.                   (if
  55.                     (eq (car opt) "b0")
  56.                     (polar pm (+ (atan (/ (sin u) (cos u))) (/ pi 2.0)) ht)
  57.                     (polar pm (- (atan (/ (sin u) (cos u))) (/ pi 2.0)) (* 1.75 ht))
  58.                     )
  59.                   (if
  60.                     (eq (cadr opt) "c0")
  61.                     (polar pm (angle pm pc) (if (<= 1e-4 (angle pc pm) pi) (* 1.75 ht) ht))
  62.                     (polar pm (angle pc pm) (if (<= 1e-4 (angle pc pm) pi) ht (* 1.75 ht)))
  63.                   )
  64.                 )
  65.               )
  66.        (if
  67.          (equal rad 0.0 1e-
  68.          (vla-adddimaligned space (vlax-3d-point p1) (vlax-3d-point p2) (vlax-3d-point p3))
  69.          (vla-adddimarc space (vlax-3d-point pc) (vlax-3d-point p1) (vlax-3d-point p2) (vlax-3d-point p3))
  70.          )
  71.        (setq a (1+ a))
  72.        )
  73.      )
  74.    )
  75. (vla-endundomark acdoc)
  76. (princ)
  77. )
  78. (defun AD_options (old / a1 a2 b1 b2 dcl dcl_id file r)
  79. (setq
  80.    a1 (car old)
  81.    a2 (cadr old)
  82.    dcl (open (setq file (vl-filename-mktemp "AD" (getvar 'dwgprefix) ".dcl")) "w")
  83. )
  84. (write-line
  85.    "AD: dialog { label = "Dimension Polyline Options" ;
  86.    : boxed_radio_column { label = "Linear dimension position" ; key = "a1";
  87.    : radio_button { label = "Above line" ; key = "b0";}
  88.    : radio_button { label = "Below line" ; key = "b1";}}
  89.    : boxed_radio_column { label = "Arc dimension position" ; key = "a2";
  90.    : radio_button { label = "Inside arc" ; key = "c0";}
  91.    : radio_button { label = "Outside arc" ; key = "c1";}
  92.    : radio_button { label = "As for lines" ; key = "c2";}}
  93.    ok_cancel ;}"
  94.    dcl)
  95. (close dcl)
  96. (if
  97.    (< 0 (setq dcl_id (load_dialog file)))
  98.    (if
  99.      (new_dialog "AD" dcl_id)
  100.      (progn
  101.        (action_tile "a1" "(setq b1 $value)")
  102.        (action_tile "a2" "(setq b2 $value)")
  103.        (set_tile "a1" (setq b1 a1))
  104.        (set_tile "a2" (setq b2 a2))
  105.        (setq r (start_dialog))
  106.        (unload_dialog dcl_id)
  107.        )
  108.      )
  109.    )
  110. (if (findfile file) (vl-file-delete file))
  111. (if
  112.    (= r 1)
  113.    (mapcar 'setdictvar
  114.      '("AD_otions" "AD_otions")
  115.      '("Linear" "Arc")
  116.      (list b1 b2)
  117.    )
  118.    (list a1 a2)
  119. )
  120. )
  121.    
  122. (defun getdictvar (dict var / dict_ename)
  123. (if
  124.    (setq dict_ename (cdr (assoc -1 (dictsearch (namedobjdict) dict))))
  125.    (cdr (assoc 1 (dictsearch dict_ename var)))
  126. )
  127. )
  128. (defun setdictvar (dict var val / dict_name record)
  129. (or
  130.    (setq dict_ename (cdr (assoc -1 (dictsearch (namedobjdict) dict))))
  131.    (setq dict_ename (dictadd (namedobjdict) dict (entmakex '((0 . "DICTIONARY") (100 . "AcDbDictionary")))))
  132.    )
  133. (if
  134.    (setq record (dictsearch dict_ename var))
  135.    (entmod (subst (cons 1 val) (assoc 1 record) record))
  136.    (dictadd
  137.      dict_ename
  138.      var
  139.      (entmakex
  140.        (list
  141.          '(0 . "DICTIONARYVAR")
  142.          '(100 . "DictionaryVariables")
  143.          '(280 . 0)
  144.          (cons 1 val)
  145.        )
  146.      )
  147.    )
  148. )
  149. val
  150. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:18:57 | 显示全部楼层
Helo BIGAL先生:),
你几乎完成了。。。非常感谢您准备:)。。。我可以请求一些小的调整吗?
对于选择方法,一次选择所有水平线和垂直线(“交叉线”层线),以生成可能的尺寸?
 
非常感谢。
回复

使用道具 举报

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:22:25 | 显示全部楼层
我修改了代码,添加了一段时间,这样你可以继续拾取线条,dims将保持不变,还修复了一个捕捉问题。
 
如果你有数百个,那么需要第二个选择集来进行线条和第二次重复,开始进入“不再自由”。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:28:00 | 显示全部楼层
尊敬的BIGAL:,
感谢您的更新。。有些时候,在选择一些不产生尺寸的直线和矩形后,请修复。
你能提供一种从一行到多行的选择方法吗。。我有很多台词。。有时我有很多台词。。如果选择方法为同时选择多行,则可能会有所帮助。
 
非常感谢。
回复

使用道具 举报

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:31:57 | 显示全部楼层
1如果矩形是直线,则在检查PLINE时将不起作用。
 
2全选,事情就这样发生了,正如我暗示的,现在轮到你看这条线了
  1. ; dim a rectang via a vertical or hor line
  2. ; by Alan H Dec 2017
  3. (defun c:dimrec ( / lobj pt1 pt2 pt4 pt5 pt6 maxpt minpt maxpoint minpoint ss ent)
  4. (SETQ ANGBASEE (GETVAR 'ANGBASE))
  5. (setvar 'angbase 0.0)
  6. (setq oldsnap (getvar 'osmode))
  7. (setvar 'osmode 0)
  8. (while (/=  (setq ent (entsel "\nPick Line object")) nil)
  9. (setq lobj (vlax-ename->vla-object (car ent)))
  10. (setq pt1 (vlax-safearray->list (vlax-variant-value (vla-get-startpoint lobj))))
  11. (setq pt2 (vlax-safearray->list (vlax-variant-value (vla-get-endpoint lobj))))
  12. (setq ang (angle pt1 pt2))
  13. (cond
  14. ((/= ang 0.0)(setq vert "F"))
  15. ((= ang 0.0)(setq vert "T"))
  16. ((= ang 180.0)(setq vert "T"))
  17. ((= ang pi)(setq vert "T"))
  18. )
  19. (setq ss (ssget "F"(list pt1 pt2)))
  20. (repeat (setq x (sslength ss))
  21. (setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
  22. (if (= (vla-get-ObjectName obj) "AcDbPolyline")
  23. (progn
  24. (vla-GetBoundingBox obj 'minpoint 'maxpoint)
  25. (setq minpt (vlax-safearray->list  minpoint))
  26. (setq maxpt (vlax-safearray->list  maxpoint))
  27. (if (= vert "F")
  28. (progn
  29. (setq pt4 (list (car pt1)(cadr maxpt)))
  30. (setq pt5 (list (car minpt)(cadr maxpt)))
  31. (setq pt6 (list  (car maxpt) (+ 10 (cadr maxpt))))
  32. )
  33. (progn
  34. (setq pt4 (list (car maxpt)(cadr pt1)))
  35. (setq pt5 (list (car maxpt)(cadr minpt)))
  36. (setq pt6 (list (+ 10 (car maxpt)) (cadr maxpt)))
  37. )
  38. )
  39. (command "dimlinear"  maxpt pt4 pt6 )
  40. (command "dimlinear"  pt4 pt5 pt6 )
  41. )
  42. (princ "Line Found")
  43. )
  44. )
  45. )
  46. (setvar 'osmode oldsnap)
  47. (setvar 'angbase angbasee)
  48. )

 
试试看,当你陷入困境时,我们会帮助你的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 23:59 , Processed in 0.611035 second(s), 86 queries .

© 2020-2025 乐筑天下

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