我试过这个,但我有一个小错误。。。。
我仍然有这个问题
2) 用同样的方法我“选择基准参考点:”并选择块并写入块的文本,用同样的方法当我选择文本块时写入文本的名称。因为在某些情况下,项目编号的顺序不是(1、2、3、4、5……100等),而是随机的(50、48、32、60、72、34、15.22……等)
- (Defun c:DiaTabs ;|<--- haha |; ( / _Insert _AttFunc _getprop cnt data space ob1 ob2 ob3 p1 p2 p3 ip num)
- (vl-load-com)
- (defun _insert (sp bname p)(vlax-invoke space 'InsertBlock p bname 1 1 1 0))
- (defun _AttFunc (en lst / vals v)
- (mapcar (function (lambda (at)
- (setq vals (list (vla-get-tagstring at)(vla-get-textstring at)))
- (if (and lst (setq v (assoc (car vals) lst)))
- (vla-put-textstring at (cadr v))) vals))
- (vlax-invoke (if (eq (type en) 'VLA-OBJECT)
- en (vlax-ename->vla-object en)) 'Getattributes)
- )
- )
- (defun _getprop (msg bn tg )
- (prompt msg)
- (if (setq
- s (ssget "_:S:L" (list '(0 . "INSERT") '(66 . 1) (cons 2 bn)))
- )
- (setq att (_AttFunc (ssname s 0) nil)
- ip (cdr (assoc 10 (entget (ssname s 0)))))
- (progn (princ "\n<<Invlaid Seletion>>") (_getprop msg bn tg))
- )
- (list ip (assoc tg att) )
- ) (if (not (member "geomcal.arx" (arx)))
- (arxload "geomcal")
- )
- (setq ADoc (vla-get-activedocument (vlax-get-acad-object))
- Space (if (= (getvar "CVPORT") 1)
- (vla-get-PaperSpace ADoc)
- (vla-get-ModelSpace ADoc)
- ))
- (setq cnt -1 num 1)
- (if (vl-every '(lambda (b)
- (setq cnt (1+ cnt))
- (tblsearch "BLOCK" b)) (setq blks '("STATION" "POINT" "TITLE" "DATA")))
- (progn
- (setq ob1 (_GETPROP "\nPick Base Referene point: " "STATION" "POINT" ))
- (setq ob2 (_GETPROP "\nPick Second point: " "STATION" "POINT" ))
- (setq p1 (Car ob1) p2 (car ob2))
- (setq angs (If (> (car p1)(car p2))
- "ang(p1,p3,p2)" "ang(p1,p2,p3)"))
- (setq data nil)
- (while (setq p3 (getpoint p1 (strcat "\nPick point " (itoa num)":")))
- (if (and (cadr (sssetfirst nil (ssget "_C" p3 p3 '((2 . "POINT")))))
- (setq ob3 (_GETPROP (strcat "\nPick point " (itoa num)":")
- "POINT" "POINT" )))
- (progn (setq p3 (car ob3))
- (setq data (cons (list
- (itoa num)
- (Strcat
- (rtos
- (cvunit (c:cal angs)
- "degree" "grad") 2 4)
- "g"
- )
- (rtos (distance p1 p3) 2 2)
- ) data))
- (setq num (1+ num))
- )
- (princ "\nBlock "POINT" Not found"))
- )
-
- (setq ip (getpoint "\nPick Base point for Table: "))
- (_AttFunc (_Insert space "TITLE" ip )
- (list (list "TITLE" (strcat "FROM " (strcase (cadadr ob1)) " -> " (strcase (cadadr ob2))))))
- (foreach itm (reverse data)
- (_AttFunc (_Insert space "DATA" ip )
- (list (list "NUM" (car itm))
- (list "BEARING" (cadr itm))
- (list "DISTANCE" (last itm))))
- (setq ip (polar ip (* pi 1.5) 1.0)))
- )
- (princ (strcat "\n<<<Block " (nth cnt blks) " Not Found>>>"))
- )
- (princ)
- )
DiaTabs。图纸 |