xj6019
发表于 2020-9-4 20:49:21
start4444 发表于 2020-9-4 18:08
一样的,斜的自己搞过去就行
(defun c:tt5 (/ dim n d i lastdimp1 p11 p2 p22 p3 p33 p4 plst px);正 ...
不好意思,抱歉,考虑不周,如果是定义第一个点为准,有时候会不理想,参照图片:
我想了一下,定义第一个点和定义第二个点,好像都有意外的情况吧,能增加个判断吗,以离得最近的点为基准点,可以吗?
麻烦你也帮我考虑一下好吗,怎么最合适。劳驾代码再稍做优化一下吧。谢谢了。
start4444
发表于 2020-9-5 00:10:01
xj6019 发表于 2020-9-4 20:49
不好意思,抱歉,考虑不周,如果是定义第一个点为准,有时候会不理想,参照图片:
我想了一下,定义第一 ...
想要程序自动检测是不可靠的,因为你选的点有可能不包含你说的最近点,唯有靠你自己判断才稳妥,建议你加一段选参考点的码就可靠了
xj6019
发表于 2020-9-5 07:21:28
start4444 发表于 2020-9-5 00:10
想要程序自动检测是不可靠的,因为你选的点有可能不包含你说的最近点,唯有靠你自己判断才稳妥,建议你加 ...
我的感觉是第一排的间距肯定是在头两个点的时候确定,所以只判断头两个点的位置关系就好吧。能麻烦你再改改代码吗,如果这个方式真行不通的话,改的那一段,怎么改成以第二个点为准呀,我各用段时间,实际当中看看哪种情况最多,以后就固定到一种最常见的方式。(自己试着改了改,又没成)
start4444
发表于 2020-9-5 10:13:30
你上面那个截图第二个点如果选上面的就不对了,或者右边还有往下的线就更不对了
start4444
发表于 2020-9-5 10:19:17
要第二点就把(ptper p1 p2 p3)改为p2就行了
depgfdepgf
发表于 2020-9-7 06:37:42
如何实现第一排标注的基点都在同一水平线线上
xj6019
发表于 2020-9-7 08:13:28
depgfdepgf 发表于 2020-9-7 06:37
如何实现第一排标注的基点都在同一水平线线上
这个你要问问写代码的老师,@一下问问就行。
depgfdepgf
发表于 2020-9-7 09:30:51
[*](defun c:tt8 (/dim i lastdimp1 p11 p2 p22 p3 p33 p4 plst px)
[*](if (not nbiaozhu) (setq nbiaozhu 3)) (if (not Dbiaozhu) (setq Dbiaozhu 1))
[*](setqnbiaozhu (if (setq n (getint (strcat "\n>>>标注排数<" (itoa nbiaozhu) ">:"))) n nbiaozhu) Dbiaozhu (if (setq d(getreal (strcat "\n>>>标注比例<" (rtos Dbiaozhu 2 2) ">:"))) d Dbiaozhu) i 0 plst '())
[*]
[*](SETQ P1 (GETPOINT "\n指定第一点 :"))
[*](SETQ P2 (GETPOINT P1 "\n指定第二点 :"))
[*](COMMAND "_DIMLINEAR" P1 P2 PAUSE)
[*](SETQ ANG (CDR (ASSOC 50 (ENTGET (ENTLAST)))))
[*](COMMAND "_DIMCONTINUE")
[*](WHILE (SETQ P3 (GETPOINT "\n指定下一点 :"))
[*] (IF (EQUAL ANG 0.0 1E-3)
[*] (SETQ P3 (LIST (CAR P3) (CADR P2) 0.0))
[*] (SETQ P3 (LIST (CAR P2) (CADR P3) 0.0))
[*] )
[*] (COMMAND P3)
[*]);到这里不会实现多级尺寸了,请老师实现下,谢谢
[*](setq dim (entlast) p1 (cdr (assoc 13 (entget dim))) p2 (cdr (assoc 14 (entget dim))) p3 (cdr (assoc 10 (entget dim))) px (getpoint))
[*](command"DIMCONTINUE" dim )
[*](while px
[*] (command px)
[*] (setq px (getpoint"\n>>>选取下一点:") plst (cons px plst))
[*])
[*](command)
[*](setq lastdim (entlast) p11 (cdr (assoc 13 (entget lastdim))) p22 (cdr (assoc 14 (entget lastdim))) p33 (cdr (assoc 10 (entget lastdim)))p4 (inters p3 p33 p1 (polar p1 (angle p2 p3) 5) nil))
[*](repeat (1- nbiaozhu)
[*] (command "DIMALIGNED" "non" (polar p4 (angle p2 p3) (* i (* 8 Dbiaozhu))) "non" (polar p33 (angle p2 p3) (* i (* 8 Dbiaozhu)))"non" (polar p3 (angle p2 p3) (* (* 8 Dbiaozhu) (setq i (1+ i)))))
[*])
[*](c:ddr2)
[*](princ)
[*])
00放飞梦想00
发表于 2020-9-14 22:20:42
xj6019 发表于 2019-12-9 18:38
这个代码是明经上的,出自哪里忘了 ,先对作者表示感谢和抱歉!挪用一下!
其中命令ddr可以断开标注,合 ...
很好的程序
00放飞梦想00
发表于 2020-9-14 22:28:51
xj6019 发表于 2019-12-14 12:56
你好,再麻烦一下,这几天用下来,每次尺寸线之间的距离每次都脑子算一遍有点不方便,我说个思路您看看好 ...
我有,怎么发你