我试过这个,但我有一个小错误。。。。 
我仍然有这个问题 
  
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。图纸  |