乐筑天下

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

[编程交流] 使用“对齐”继续标注

[复制链接]

6

主题

26

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:16:00 | 显示全部楼层 |阅读模式
大家好,
 
我需要LISP来使用对齐选项继续标注。在参考图像中,有2个选项A和B。我得到了具有连续维度的选项B,但我需要选项A。
 
191609bwfr000fc81rg8cx.jpg
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:26:39 | 显示全部楼层
好的
我面临同样的问题
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:32:15 | 显示全部楼层
这是你的问题,但我有其他lisp它的工作,只有在不同的角度折线。
它不适用于点对点。仅对于多段线,选择一次并一次创建所有尺寸。
(PDIM)
 
 
(定义c:pdim(/plSet pLlst vLst oldOsn cAng cDis cPt)
(原则“\n>>”)
(if(setq plSet(ssget’((0。“LWPOLYLINE”)))
(程序
(setq pLlst(vl remove if’listp
(mapcar’cadr(ssnamex plSet)))
(setvar“OSMODE”0)(setvar“CMDECHO”0)
(foreach pl pLlst
(setq vLst(mapcar’cdr
(如果没有,则删除vl
'(λ(x)(=10(车x))(entget pl)))
oldOsn(getvar“OSMODE”)
); 结束setq
(虽然(
(setq cAng(角度(car vLst)(cadr vLst))
cDis(/(距离(car vLst)(cadr vLst))2)
cPt(polar(polar(car vLst)cAng cDis)
(+苍(/pi 2))(*2(getvar“DIMTXT”))
); 结束setq
(命令“dimaligned”(car vLst)(cadr vLst)cPt)
(setq vLst(cdr vLst))
); 结束时
); 结束foreach
(setvar“OSMODE”oldOsn)(setvar“CMDECHO”1)
); 结束程序
); 如果结束
(普林斯)
); c结束:pdim
回复

使用道具 举报

6

主题

26

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:37:16 | 显示全部楼层
谢谢拉希德先生的建议。但我希望有一个更简单的方法。。我必须选择很多点,然后选择我想要的那一边
尺寸
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:41:27 | 显示全部楼层
这是我的PDIM版本。。。它适用于长波多段线,并可选择“内侧”-“外侧”。。。
 
  1. (defun c:pdim ( / ListClockwise-p ch plSet pLlst vLst oldOsn cAng cDis cPt )
  2. (defun ListClockwise-p ( lst / z vlst )
  3.    (vl-catch-all-apply 'minusp
  4.      (list
  5.        (if
  6.          (not
  7.            (equal 0.0
  8.              (setq z
  9.                (apply '+
  10.                  (mapcar
  11.                    (function
  12.                      (lambda (u v)
  13.                        (- (* (car  u) (cadr  v)) (* (car  v) (cadr  u)))
  14.                      )
  15.                    )
  16.                    (setq vlst
  17.                      (mapcar
  18.                        (function
  19.                          (lambda (a b) (mapcar '- b a))
  20.                        )
  21.                        (mapcar (function (lambda (x) (car lst))) lst)
  22.                        (cdr (reverse (cons (car lst) (reverse lst))))
  23.                      )
  24.                    )
  25.                    (cdr (reverse (cons (car vlst) (reverse vlst))))
  26.                  )
  27.                )
  28.              ) 1e-6
  29.            )
  30.          )
  31.          z
  32.          (progn
  33.            (prompt "\n\nChecked vectors are colinear - unable to determine clockwise-p of list")
  34.            nil
  35.          )
  36.        )
  37.      )
  38.    )
  39. )
  40. (initget 1 "Outside Inside")
  41. (setq ch (getkword "\nChoose on which side to put dimensions [Outside/Inside] : "))
  42. (princ "\n<<< Select LwPolyline(s) for dimensioning >>> ")
  43. (if (setq plSet (ssget '((0 . "LWPOLYLINE"))))
  44.    (progn
  45.      (setq pLlst (vl-remove-if 'listp
  46.                         (mapcar 'cadr(ssnamex plSet)))
  47.            oldOsn (getvar "OSMODE")
  48.      ); end setq
  49.      (setvar "OSMODE" 0) (setvar "CMDECHO" 0)
  50.      (command "_.undo" "_be")
  51.      (foreach pl pLlst
  52.       (setq vLst (mapcar '(lambda( x ) (trans x 0 1))
  53.                    (mapcar 'cdr (vl-remove-if-not '(lambda( x ) (= 10 (car x)))
  54.                                   (entget pl)
  55.                                 )
  56.                    )
  57.                  )
  58.       ); end setq
  59.       (if (equal (logand (cdr (assoc 70 (entget pl))) 1) 1)
  60.        (setq vLst (append vLst (list (car vLst))))
  61.       ); end if
  62.       (if (not (ListClockwise-p vLst)) (setq vLst (reverse vLst)))
  63.       (while (< 1 (length vLst))
  64.        (setq cAng (angle (car vLst) (cadr vLst))
  65.                cDis (/ (distance (car vLst) (cadr vLst)) 2.0)
  66.        )
  67. ;        (if (>= (caar vLst) (caadr vLst))
  68. ;         (setq cAng (- cAng pi))
  69. ;        ); end if
  70.        (if (eq ch "Inside")
  71.         (setq cPt (polar (polar (car vLst) cAng cDis) (- cAng (* 0.5 pi)) (* 2.5 (getvar "DIMTXT")))); end setq
  72.         (setq cPt (polar (polar (car vLst) cAng cDis) (+ cAng (* 0.5 pi)) (* 2.5 (getvar "DIMTXT")))); end setq
  73.        ); end if
  74.        (command "_.dimaligned" (car vLst) (cadr vLst) cPt)
  75.        (setq vLst (cdr vLst))
  76.       ); end while
  77.      ); end foreach
  78.      (command "_.undo" "_e")
  79.      (setvar "OSMODE" oldOsn) (setvar "CMDECHO" 1)
  80.    ); end progn
  81. ); end if
  82. (princ)
  83. ); end of c:pdim

 
HTH,M.R。
回复

使用道具 举报

16

主题

99

帖子

83

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 18:48:43 | 显示全部楼层
hibba您好,
 
看看这是否适合你。
就像标准dimcontinue一样使用它:
 
  1. ;; DimAlignedContinue ;;
  2. (defun c:DAC ( / *error* doc point1 point2 )
  3.    (defun *error* (msg)
  4.    (if        (and msg
  5.      (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  6. )
  7.      (princ (strcat "\nError: " msg))
  8.    )
  9.    (if doc
  10.      (vla-endundomark doc)
  11.      )
  12.    (princ)
  13. ) ;_ end of defun
  14. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  15. (vla-startundomark doc)
  16. (setq point1 (getpoint "\nSpecify first extension line origin:"))
  17. (while
  18.    (setq point2 (getpoint "\nSpecify second extension line origin:"))
  19.     (command "_.dimaligned" point1 point2 pause)
  20.     (setq point1 point2)
  21. ) ;_ end of while
  22. (vla-endundomark doc)
  23. (princ)
  24. ) ;_ end of defun
  25. (vl-load-com)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:50:49 | 显示全部楼层
 
嗨,PDuMont,
 
在将变量point1赋给另一个值之前,无需将其设置为nil。
回复

使用道具 举报

16

主题

99

帖子

83

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 18:58:03 | 显示全部楼层
嗨,塔瓦,
 
是的,我不确定。。。
感谢您的澄清。
回复

使用道具 举报

6

主题

26

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 19:04:12 | 显示全部楼层
 
谢谢Marko先生这对我很有帮助。。。
回复

使用道具 举报

6

主题

26

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 19:06:31 | 显示全部楼层
 
非常感谢PDuMont先生,这正是我想要的。。。这对我来说很好
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:58 , Processed in 0.424574 second(s), 86 queries .

© 2020-2025 乐筑天下

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