woodman78 发表于 2022-7-5 23:25:22

高程标记

大家好,
 
好久不写了。。。。
我正在尝试使用此lisp:
http://www.cadlispandtips.com/2011/10/lisp-elevation-marker.html
 
但是,当我按照说明操作时,我得到了一个标高为0的块。
 
我错过什么了吗?
我加载了2个lisp文件并运行EDAT,选择了设置基准的位置,然后运行ELE命令,但块的高程为0。
 
非常感谢您的帮助。。
谢谢

woodman78 发表于 2022-7-6 00:10:05

所以我回到了李的例行程序,并对其进行了轻微修改,以显示我们在办公室所做的标高:
 
;;-----------------------=={ Elevation Marker }==-----------------------;;
;;                                                                      ;;
;;This program continuously prompts the user to specify a point and   ;;
;;constructs an elevation marker composed of a variable width         ;;
;;polyline & single-line text object at the specified point, with   ;;
;;the text content displaying the UCS Y-coordinate of the point.      ;;
;;                                                                      ;;
;;----------------------------------------------------------------------;;
;;Author:Lee Mac, Copyright © 2013-www.lee-mac.com            ;;
;;----------------------------------------------------------------------;;

(defun c:em ( / *error* ang hgt len ocs pt1 pt2 pt3 pt4 str )

   (defun *error* ( msg )
       (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
         (princ (strcat "\nError: " msg))
       )
       (princ)
   )

   (setq hgt (getvar 'textsize)
         ocs (trans '(0.0 0.0 1.0) 1 0 t)
         ang (angle '(0.0 0.0) (trans (getvar 'ucsxdir) 0 ocs t))
   )
   (terpri)
   (while (setq pt1 (getpoint "\rSpecify point <exit>: "))
       (setq str (rtos (cadr pt1))
             len (strlen str)
             pt2 (list (carpt1) (+ (cadr pt1) (* hgt 0.5 (sqrt 3))))
             pt3 (list (- (car pt1) (* hgt len)) (cadr pt2))
             pt4 (list (- (car pt2) (* hgt 0.5 len)) (+ (cadr pt2) hgt))
       )
       (foreach sym '(pt1 pt2 pt3 pt4)
         (set sym (trans (eval sym) 1 ocs))
       )
       (entmake
         (list
            '(000 . "LWPOLYLINE")
            '(100 . "AcDbEntity")
            '(100 . "AcDbPolyline")
            '(090 . 3)
            '(070 . 0)
               (cons 038 (caddr pt1))
               (cons 010 pt1)
            '(040 . 0.0)
               (cons 041 hgt)
               (cons 010 pt2)
                (cons 040 (* hgt 0.01))
               (cons 041 (* hgt 0.01))
                ;(cons 010 pt3)
               ;(cons 210 ocs)
         )
       )
       (entmake
         (list
            '(000 . "TEXT")
               (cons 007 (getvar 'textstyle))
               (cons 001 str)
               (cons 050 ang)
               (cons 040 hgt)
                (cons 010 pt3) ; turns text on and off
               (cons 011 pt4)
               '(072 . 0)
            '(073 . 2)
               (cons 210 ocs)
         )
       )
   )
   (princ)
)
 
如果有人能帮忙,我需要并希望有一件事是,可以改变标高是否出现在箭头指向下的线的上方和箭头指向上的线的下方。只是我们对很多墙进行了详细设计,有时在墙盖下放置标高非常方便。。
 
谢谢

BIGAL 发表于 2022-7-6 00:40:08

因为文本只是为了检查pt1 pt2角度,并在末尾移动文本作为额外步骤。
页: [1]
查看完整版本: 高程标记