(defun C:di5(/ dx dy dy1 dx1 dx2 diml pt scale dxt dyt dtt dimlt lay pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 ptt i) (setvar "CMDECHO" 0) ;控制在 AutoLISP 的 command 函数运行时 ; AutoCAD 是否回显提示和输入。0 关闭回显 1 打开回显
(setq lay (getvar "clayer")) ;保存当前图层信息 (command "color" "bylayer") (command "layer" "m" "dim" "c" "green" "dim" "") ;新建 dim 层 绿色 (if (or (= nil (tblsearch "style" "xw")) ; style表中找有没有 xw定义 (/= (cdr (assoc 40 (tblsearch "style" "xw"))) 0) ) (command "STYLE" "xw" "txt" "150" ".8" "0" "n" "n" "n") ;没有新建 字样式 ) (if (= sca nil) (setq sca 1)) (setq scale (getreal (strcat "\nScale <" (rtos sca 2 0) ">:"))) (if (= scale nil) (setq scale sca)) ;比例 (setq sca scale) (command "osnap" "nea") ;捕捉最近点512 (setq pt (getpoint "\nStart point of DIM <nea mode>: ")) ;开始标注点pt (command "osnap" "non") ;关闭捕捉 (setq dy (cadr pt)) ;pt点的x y坐标 (setq dx (car pt)) (setq diml 0 i 0) (while (/= diml nil) (setq diml (getreal "\nDimension text:")) ;标注的长度 (if (/= diml nil) ;*********** 坚向标注尺寸 通过pt1 dt pt2 /pt3 pt5 pt4 向上标 *********** (progn (setq dx1 (- dx 150)) ;超出尺寸线3 (setq dx2 (+ dx 400)) ;起点偏移量7 (setq pt1 (list dx1 dy)) (setq pt2 (list dx2 dy)) (if (= i 0)(command "line" pt1 pt2 "")) ;标注界线1 (setq dy1 (+ dy (/ diml scale))) ;按比例缩小长度 (setq pt3 (list dx1 dy1)) (setq pt4 (list dx2 dy1)) (command "line" pt3 pt4 "") ;标注界线2 (setq pt (list dx dy)) (setq pt5 (list dx dy1)) (command "line" pt pt5 "") ;尺寸线 (setq pt6 (list (+ dx 70) (- dy 70))) ;建筑标致 \ 右下点pt6左上点pt7 长度分别70 (setq pt7 (list (- dx 70) (+ dy 70))) (if (= i 0)(command "pline" pt6 "w" "25" "25" pt7 ""));画建筑标致1箭头 (setq pt8 (list (+ dx 70) (- dy1 70))) (setq pt9 (list (- dx 70) (+ dy1 70))) (command "pline" pt8 "w" "25" "25" pt9 "") ;画建筑标致2箭头 (setq dyt (+ dy (/ (/ diml scale) 2))) (setq dxt (- dx 70)) (setq ptt (list dxt dyt)) (setq dimlt (rtos diml 2 0)) (command "text" "s" "xw" "c" ptt "150" "90" dimlt) ;尺寸线中点靠左70的输入长度 (setq dy (+ dy (/ diml scale))) (setq i (+ i 1)) ) ) ) (command "layer" "s" lay "") (princ)(princ) )
以上是借用的程序,
我现在有四个变量 :1 通行高度 变量a 第二变量 顶帽高变量 b 第三第四为C和d
变量在程序中都有值,
问题是,如何写调用以上标注程序,谢谢
|