明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 528|回复: 1

[提问] 求更改LISP 代码 麻烦各位帮个忙

[复制链接]
发表于 2015-12-17 13:14:39 | 显示全部楼层 |阅读模式
文字距离直线太远了 能改近点吗? 还有文字有的是倒着的,能正过来吗?
麻烦大神帮我改改 谢谢啦
(defun c:LLL()
        (COMMAND"UCS" "")
        (setvar"cmdecho" 1)
        (SETVAR"OSMODE" 0)
        (setq    AcadObject  (vlax-get-acad-object)  AcadDocument (vla-get-ActiveDocument Acadobject)   mSpace      (vla-get-ModelSpace Acaddocument))
        ;;选取需要测量的样条曲线、圆弧、直线、椭圆
        (setq en(ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))
        (setq i 0)
        ;;获取系统参数textsize
        (setq shh (getvar "textsize"))
        (setq str_hh(strcat "\n文字高度 <" (rtos shh 2) ">: "))
        (setq hh(getdist str_hh))
        (while hh
        (setvar "textsize" hh)
        (setq hh nil))
        ;;输入标注文字高度
        ;;循环开始
        (repeat(sslength en)  
        (setq ss(ssname en i))  
        (setq endata(entget ss))  
        (command "lengthen" ss "")  
        (setq dd(getvar "perimeter"))  
        (princ(strcat "\n长度=" (rtos dd 2)))  
        ;;寻找代表图层的字符串
        (setq aa(assoc 0 endata))  
        ;;获取图层名称
        (setq aa1(cdr aa))  
        ;;判断线条种类
        (cond    ((= aa1 "SPLINE")   
        ;;如果是spline   
        (progn   
        (setq arcObj(VLAX-ENAME->VLA-OBJECT ss))   
        (setqstartPnt1 (vla-get-ControlPoints arcObj))   
        (setq p1      
        (vlax-safearray->list(vlax-variant-value startPnt1))   
        )   
        (setq x1 (car p1))   
        (setq y1(cadr p1))   
        (setq z1(caddr p1))   
        (setq pp1(list x1 y1 z1))   
        (repeat (- (/(length p1) 3) 1)      
        ;;循环,寻找最后一个控制点      
        (setq p1(cdddr p1))      
        (setq x2 (car p1))      
        (setq y2(cadr p1))      
        (setq z2(caddr p1))   
        )   
        (setq pp2(list x2 y2 z2))   
        )   
        )   
        ((= aa1"LWPOLYLINE")   
        ;;如果是LWPOLYLINE   
        (progn   
        (setq arcObj(VLAX-ENAME->VLA-OBJECT ss))  
        (setqstartPnt1 (vla-get-Coordinates arcObj))  
        (setq p1      
        (vlax-safearray->list(vlax-variant-value startPnt1))  
        )   
        (setq x1 (car p1))   
        (setq y1(cadr p1))   
        (setq z1(caddr p1))   
        (setq pp1(list x1 y1 z1))   
        (repeat (- (/(length p1) 3) 1)      
        ;;循环,寻找最后一个控制点      
        (setq p1(cdddr p1))      
        (setq x2 (carp1))      
        (setq y2(cadr p1))      
        (setq z2(caddr p1))   
        )   
        (setq pp2(list x2 y2 z2))   
        )   
        )   
        (t   
        ;;如果是其他种类线条   
        (progn   
        (setq arcObj(VLAX-ENAME->VLA-OBJECT ss))   
        (setq startPnt1 (vla-get-StartPoint arcObj))   
        ;;获取起点   
        (setq endPnt1(vla-get-EndPoint arcObj))   
        ;;获取终点   
        (setq pp1       (vlax-safearray->list(vlax-variant-value startPnt1))   
        )   
        (setq      
        pp2(vlax-safearray->list (vlax-variant-value endPnt1))   
        )   
        )   
        )  
        )  
        (setq x1 (car pp1))  
        (setq y1(cadr pp1))  
        (setq z1(caddr pp1))  
        (setq x2 (car pp2))  
        (setq y2(cadr pp2))  
        (setq z2(caddr pp2))  
        (setq x (/ (+ x1 x2) 2))  
        (setq y (/ (+ y1 y2) 2))  
        (setq z (/ (+ z1 z2) 2))  
        (setq pt(list x y z))  
        ;;取得线段两端的中点
        (setq ang(angle pp1 pp2))  
        ;;获取角度
        (if    (> (* (/ ang pi) 180) 180)   
        (setq ang (+ ang pi))  
        )  
        (command "text"      
        "j"      
        "bc"      
        pt      
        ""      
        (* (/ ang pi) 180)      
        (strcat "" (rtos dd 2))      
        ""  
        )  
        (setq i (1+ i)))
        (prin1)
)
(prompt"\n <>在图中直接写出长度")
(prin1)
发表于 2015-12-17 16:23:37 | 显示全部楼层
你这个程序有点乱,那摩多变量都没整理。
把它扔掉,另找,标注长度的程序有比这个好的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-21 00:48 , Processed in 0.183560 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表