求编一个画指定宽度矩形并填充的LSP
本帖最后由 37902505 于 2023-6-14 16:35 编辑麻烦论坛里各位大哥,抽空帮我编一个在平面图上画一个矩形(和CAD用REC画矩形一样,指定一个图层)并自动填充(指定另一个图层),然后旁边自动生成相应宽度的文字,我已上传文件,麻烦了
你这点钱大家很难办啊,等有缘人出现吧
;; 需要e派工具箱(xcad)的支持
需要e派工具箱(xcad)的支持 xyp1964 发表于 2023-6-14 12:45
;; 需要e派工具箱(xcad)的支持
怎么用呀,直接加载这个LSP不行吗?要怎么加载E派工具箱? 37902505 发表于 2023-6-14 14:28
怎么用呀,直接加载这个LSP不行吗?要怎么加载E派工具箱?
进群下载工具箱 本帖最后由 cq4920 于 2023-6-15 00:06 编辑
这个多简单啊!
绘制矩形的方法太多了,我就直接弄个最简单的,你也可以根据REC的方法优化绘制矩形的函数,论坛太多了
(defun c:rect (/ pt1 pt2 width height)
(if (setq pt1 (getpoint "\n指定插入点: "))
(progn
(setq pt2 (getcorner pt1 "指定对角点"))
(command "RECTANG" pt1 pt2)
(command "CHPROP" (entlast) """LA" "EQUIP_消防" "")
(command "-bhatch" "p" "stars"10 180 "s" (entlast) "" "")
(command "CHPROP" (entlast) """LA" "EQUIP_消防填充" "")
(entmake (list '(0 . "TEXT") (cons 1 "XF300 F") (cons 10 pt2) (cons 40 150)(cons 62 3)))
(command "CHPROP" (entlast) """LA" "EQUIP_消防文字" "")
)
)
)
cq4920 发表于 2023-6-15 00:04
这个多简单啊!
绘制矩形的方法太多了,我就直接弄个最简单的,你也可以根据REC的方法优化绘制矩形的函数 ...
老大,厉害,这函数能不能再优化下,生成的宽度的文字要随矩形的宽度,然后文字能不能调在矩形居中位置的上方,我是新手不太懂的搞,麻烦帮改下,谢谢 本帖最后由 cq4920 于 2023-6-15 09:10 编辑
37902505 发表于 2023-6-15 08:39
老大,厉害,这函数能不能再优化下,生成的宽度的文字要随矩形的宽度,然后文字能不能调在矩形居中位置的 ...
(defun c:rect (/ pt1 pt2 width height)
(if (setq pt1 (getpoint "\n指定插入点: "))
(progn
(setq pt2 (getcorner pt1 "指定对角点"))
(command "RECTANG" pt1 pt2)
(command "CHPROP" (entlast) "" "LA" "EQUIP_消防" "")
(command "-bhatch" "p" "stars"10 180 "s" (entlast) "" "")
(command "CHPROP" (entlast) """LA" "EQUIP_消防填充" "")
(setq n (rtos (abs (- (car pt1) (car pt2)))))
(setq txt (strcat "XF" n " F"))
(entmake (list '(0 . "TEXT") (cons 1 txt) (cons 10 pt2) (cons 40 150)(cons 62 3)))
(command "CHPROP" (entlast) """LA" "EQUIP_消防文字" "")
)
)
)
本帖最后由 cq4920 于 2023-6-15 10:08 编辑
37902505 发表于 2023-6-15 08:39
老大,厉害,这函数能不能再优化下,生成的宽度的文字要随矩形的宽度,然后文字能不能调在矩形居中位置的 ...
(defun c:rect (/ pt1 pt2 width height)
(if (setq pt1 (getpoint "\n指定插入点: "))
(progn
(setq pt2 (getcorner pt1 "指定对角点"))
(command "RECTANG" pt1 pt2)
(command "CHPROP" (entlast) "" "LA" "EQUIP_消防" "")
(command "-bhatch" "p" "stars"10 180 "s" (entlast) "" "")
(command "CHPROP" (entlast) """LA" "EQUIP_消防填充" "")
(setq n (rtos (abs (- (car pt1) (car pt2)))))
(setq txt (strcat "XF" n " F"))
(setq pt-xz-y (center-max-y pt1 pt2))
(setq pt3 (list (car pt1) (cadr pt2)))
(entmake (list '(0 . "TEXT") (cons 1 txt) (cons 11 pt-xz-y) (cons 10 pt2)
(cons 40 150)(cons 62 3)(cons 72 1)(cons 73 1)))
(command "CHPROP" (entlast) """LA" "EQUIP_消防文字" "")
)
)
)
(defun center-max-y (pt1 pt2)
(setq x-center (/ (+ (car pt1) (car pt2)) 2.0)
y-max (max (cadr pt1) (cadr pt2)))
(list x-center y-max))
页:
[1]
2