37902505 发表于 2023-6-14 10:24:28

求编一个画指定宽度矩形并填充的LSP

本帖最后由 37902505 于 2023-6-14 16:35 编辑

麻烦论坛里各位大哥,抽空帮我编一个在平面图上画一个矩形(和CAD用REC画矩形一样,指定一个图层)并自动填充(指定另一个图层),然后旁边自动生成相应宽度的文字,我已上传文件,麻烦了

帝都划水王 发表于 2023-6-14 11:20:58

你这点钱大家很难办啊,等有缘人出现吧

xyp1964 发表于 2023-6-14 12:45:01



;; 需要e派工具箱(xcad)的支持

包哥 发表于 2023-6-14 13:41:29

需要e派工具箱(xcad)的支持

37902505 发表于 2023-6-14 14:28:18

xyp1964 发表于 2023-6-14 12:45
;; 需要e派工具箱(xcad)的支持

怎么用呀,直接加载这个LSP不行吗?要怎么加载E派工具箱?

uualice2020 发表于 2023-6-14 16:01:09

37902505 发表于 2023-6-14 14:28
怎么用呀,直接加载这个LSP不行吗?要怎么加载E派工具箱?

进群下载工具箱

cq4920 发表于 2023-6-15 00:04:43

本帖最后由 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_消防文字" "")
)
)
)


37902505 发表于 2023-6-15 08:39:07

cq4920 发表于 2023-6-15 00:04
这个多简单啊!
绘制矩形的方法太多了,我就直接弄个最简单的,你也可以根据REC的方法优化绘制矩形的函数 ...

老大,厉害,这函数能不能再优化下,生成的宽度的文字要随矩形的宽度,然后文字能不能调在矩形居中位置的上方,我是新手不太懂的搞,麻烦帮改下,谢谢

cq4920 发表于 2023-6-15 09:08:40

本帖最后由 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:05:06

本帖最后由 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
查看完整版本: 求编一个画指定宽度矩形并填充的LSP