3278 发表于 2022-7-14 16:02:00

请大佬帮忙看一下,运行过程中出错,不知是哪里问题

刚接触lisp不知如何解决,请大佬给与指点!!

此lisp得思路图解


在运行中偶尔会出错


**** Hidden Message *****

masterlong 发表于 2022-7-14 16:17:00

关闭osmode最后再恢复

tigcat 发表于 2022-7-14 16:20:00

;是对象捕捉的问题吧,使用时把对象捕捉关掉程序开头添加
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
;........程序段
;程序尾部添加
(setvar "osmode" oldos)

xj6019 发表于 2022-7-14 19:45:00

;画砖砌墙+垫层
(defun C:NM (/ bb2 hh hh2 lst pa1 pa2 pa3 pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 qq ww)
      (setvar "cmdecho" 0)      
      (setq qq (getreal "\n输入墙宽"))
      (setq ww (getreal "\n输入墙高"))      
      (setq hh (getreal "\n输入放脚"))
      (setq hh2 (getreal "\n输入垫层放脚:"))      
      (setq bb2 (getreal "\n输入垫层厚度:"))
      (setq pt1 (getpoint "选取墙中心点")
                pt2 (polar pt1 pi (/ qq 2))
                pt3 (polar pt2 (* 270 (/ pi 180)) ww)
                pt4 (polar pt3 pi hh)
                pt5 (polar pt4 (* 270 (/ pi 180)) (* hh 2))      
                pt6 (polar pt5 0 (+ (* 2 hh) qq))
                pt7 (polar pt6 (* 0.5 pi) (* hh 2))
                pt8 (polar pt7pi hh)
                pt9 (polar pt8(* 0.5 pi) ww)               ;-------------计算墙体所有点
      )
      (setq pa1(polar pt5 pi hh2)
                pa2(polar pt6 0 hh2)
                pa3(polar pa2 (* 1.5 pi) bb2);-------------计算垫层对角点
      )      
      (vl-cmdf "_RECTANG""_non" pa1 "_non" pa3) 画垫层
      (setq lst(list pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt2)) 墙体点列表
      (entmake(append(list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")(cons 90 (length lst)))(mapcar '(lambda (pt)(cons 10 pt)) lst)))
      (vl-cmdf ".-HATCH" "S" (entlast) "" "P" "ANSI31" "10" "0" ""); "LA" "0" "");墙体填充 有必要可以启用指定图层 "LA" "图层名字"
      (setvar "cmdecho" 1)
      (princ)
)

3278 发表于 2022-7-14 20:03:00


大佬,牛啊

3278 发表于 2022-7-14 20:05:00


好的
谢谢

my_autocad 发表于 2022-7-19 11:17:00

把常用的砖砌体做成块,进行调用如何呢?
页: [1]
查看完整版本: 请大佬帮忙看一下,运行过程中出错,不知是哪里问题