快速填充!特别快的那种!唯一要处理的是边界的问题!
;;快速按名称填充
(defun C:hh(/ new)
(if (null (setq new (getstring "\n请输入填充名称:<上一次填充图案>")))
(princ)
(command "-bhatch" "p" new "1" "0")
))
;;绘制边界填充 实色
(defun c:1 (/ p0 p1 p2 p3 ent Pls)
(try-osmode0);取消捕捉
(if (setq p1 (getpoint (strcat "\n 指定封闭填充区域>>>填充图案为>>" "SOLID")))
(command "-bhatch" "properties" "SOLID" p1 "")
(progn
(c:zz);恢复捕捉
(if (setq p2 (getpoint (strcat "\n指定填充区域第一点>>>填充图案为>>>""SOLID" )))
(progn
(setq p0 P2)
(setq ent (entlast))
(while (setq p3 (getpoint p0 "\n指定第二点"))
(command "PLINE" p2 p3 "")
( SETQ P2 P3)
)
(command "PLINE" p2 p0 "")
(COMMAND "pedit" "m" (last_entent) """j" 0.5 ""))
(progn
(setq p2 (getpoint (strcat "\n绘制矩形区域>>>填充图案>>>""SOLID" )))
(setq p3 (getcorner p2 "\n第二点"))
(command "RECTANG" p2 p3)
)
)
(SETQ Pls (entlast))
(command "-bhatch" "p" "SOLID""s" Pls "" "")
(command "CHPROP" (entlast) """C" 251 "")
(entdel Pls)
))
(try-osmode1);恢复捕捉
)
(defun c:2 ()(SETQ NAME"ANSI37"hbl 15 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:3 ()(SETQ NAME"ANSI31"hbl 10 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:4 ()(SETQ NAME"ANSI34"hbl 3 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:4a ()(SETQ NAME"ANSI34"hbl 0.3 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:5 ()(SETQ NAME"AR-RROOF"hbl 15 hjd 45)(Mc:hatch name hbl hjd)(princ))
(defun c:6 ()(SETQ NAME"AR-CONC"hbl 1 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:7 ()(SETQ NAME"CROSS"hbl 10 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:8 ()(SETQ NAME"GRASS"hbl 5 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:9 ()(SETQ NAME"AR-SAND"hbl 1 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:10 ()(SETQ NAME"木纹面5"hbl 200 hjd 45)(Mc:hatch name hbl hjd)(princ))
(defun c:10a ()(SETQ NAME"木纹面5"hbl 50 hjd 45)(Mc:hatch name hbl hjd)(princ))
(defun c:11 ()(SETQ NAME"dolmit"hbl 20 hjd 90)(Mc:hatch name hbl hjd)(princ))
(defun c:12 ()(SETQ NAME"ANSI33"hbl 1 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:13 ()(SETQ NAME"钢筋混凝土"hbl 8 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:14 ()(SETQ NAME"DOTS"hbl 2 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:15 ()(SETQ NAME"大理石2"hbl 1 hjd 45)(Mc:hatch name hbl hjd)(princ))
(defun c:16 ()(SETQ NAME"CORK"hbl 2 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:17 ()(SETQ NAME"轻钢1:1"hbl 70 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:36z ()(SETQ NAME"300-600z"hbl 1 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:48z ()(SETQ NAME"400-800"hbl 1 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:300z ()(SETQ NAME"600z"hbl 0.5 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:400z ()(SETQ NAME"800Z"hbl 0.5 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:600z ()(SETQ NAME"600z"hbl 1 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:800z ()(SETQ NAME"800Z"hbl 1 hjd 0)(Mc:hatch name hbl hjd)(princ))
(defun c:cz ()(SETQ NAME"100"hbl 1 hjd 0)(Mc:hatch name hbl hjd)(princ))
;;绘制边界填充
(defun Mc:hatch (HNAME BL JD / p0 p1 p2 p3 ent Pls)
(try-osmode0);取消捕捉
(if (setq p1 (getpoint (strcat "\n 指定封闭填充区域>>>填充图案为>>" HNAME)))
(command "-bhatch" "properties" HNAMEBL JD p1 "")
(progn
(c:zz);恢复捕捉
(if (setq p2 (getpoint (strcat "\n指定填充区域第一点>>>填充图案为>>>"HNAME )))
(progn
(setq p0 P2)
(setq ent (entlast))
(while (setq p3 (getpoint p0 "\n指定第二点"))
(command "PLINE" p2 p3 "")
( SETQ P2 P3)
)
(command "PLINE" p2 p0 "")
(COMMAND "pedit" "m" (last_entent) """j" 0.5 ""))
(progn
(setq p2 (getpoint (strcat "\n绘制矩形区域>>>填充图案>>>"HNAME )))
(setq p3 (getcorner p2 "\n第二点"))
(command "RECTANG" p2 p3)
)
)
(SETQ Pls (entlast))
(command "-bhatch" "p" HNAMEBL JD "s" Pls "" "")
(command "CHPROP" (entlast) """C" 251 "")
(entdel Pls)
))
(try-osmode1);恢复捕捉
)
;;; 快速填充
(defun ljx-hatch (pt name jd sca / mspace e hatchobj outlst objlst )
(vl-load-com)
(setq mspace (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))
(setq e (bpoly pt))
(vl-cmdf)
(if (not (vlax-ename->vla-object e))
(progn
(bpoly pt)
(vl-cmdf "")
(setq e (entlast))
)
)
(setq objlst (list (vlax-ename->vla-object e))
hatchobj (vla-AddHatch mspace 0 name :vlax-true)
outlst (vlax-make-safearray vlax-vbobject (cons 0 (1- (length objlst))))
)
(vlax-safearray-filloutlst objlst)
(vla-appendouterloop hatchobj outlst)
(vla-evaluate hatchobj)
(vla-put-PatternScale hatchobj sca);;图案比例
(vla-put-PatternAngle hatchobj (* jd (/ pi 180.0)));;图案旋转角度
(vla-delete (vlax-ename->vla-object e))
)
感谢大佬分享~~~~ 谢谢大佬,很有用 自从用动态块做填充后,填充命令基本不用 alexmai 发表于 2021-9-16 22:54
自从用动态块做填充后,填充命令基本不用
分享一下,哈哈 gaics 发表于 2021-9-17 11:41
分享一下,哈哈
不同的填充,利用可见性分类,立面及大样图都大量使用 感谢大佬分享~~~~ 谢谢大佬的无私分享 命令: 1 ; 错误: no function definition: TRY-OSMODE0 command调用就是比CAD的H要快很多
页:
[1]