运行这个才写的多线段标注命令,不知道为啥会一直提示未知命令TT3。
准确的说是,有多少个多线段顶点就会提示多少次。
难道是因为用了两次repeat的原因?
劳烦懂的帮忙看看? - (defun c:tt3(/ m ss lsts)
- (vl-load-com)
- (setvar "cmdecho" 0)
- (Setq m 0)
- (setq ss (ssget '((0 . "LWPOLYLINE"))))
- (repeat (sslength ss)
- (setq lsts (get_point (ssname ss m)))
- (dimaligned lsts)
- (setq m (+ m 1))
- )
- (princ)
- )
- ;;;求多段线顶点坐标集合
- (defun get_point (ent / ptlist ptlist1 n)
- (setq ptlist '() ptlist1 '() n 0)
- (setq ptlist (vlax-safearray->list(vlax-variant-value(vlax-get-property(vlax-ename->vla-object ent)'Coordinates))))
- (repeat (/ (length ptlist) 2)
- (setq ptlist1 (cons (list (nth n ptlist) (nth (setq n (1+ n)) ptlist)) ptlist1))
- (setq n (1+ n))
- )
- (setq ptlist2 (mapcar (function (lambda (x) (coorchang x))) ptlist1))
- )
- ;;;;;求两点的中点垂直过50的坐标
- (defun get_mid_pt (pt1 pt2 / d ang)
- (setq d (* (distance pt1 pt2) 0.5)
- ang (angle pt1 pt2)
- )
- (polar pt1 ang d)
- )
- ;;;;;;标注多线段
- (defun dimaligned (llst / pt1 pt2 pt i)
- (setq i 0)
- (repeat (- (length llst) 1)
- (setq pt1 (nth i llst))
- (setq pt2 (nth (setq i (1+ i)) llst))
- (setq pt (get_mid_pt pt1 pt2))
- (vl-cmdf "_dimaligned" pt1 pt2 pt "")
- )
- )
- ;;;;二维坐标转换为三维
- (defun coorchang (lst)
- (setq p1 (car lst))
- (setq p2 (cadr lst))
- (setq lst (list p1 p2 0))
- )
|