求助将直线角度刷给填充图案
本帖最后由 无厘崖 于 2015-9-8 17:43 编辑刚学习lsp,想编写一个将直线或多段线倾斜角度刷给填充图案,类似与cad自带的特性匹配,但只匹配角度,其他如位置图层颜色等都不匹配。
程序功能:
第一步选择直线或多段线;
第二步选择填充图案并赋与角度;
第三步可以连续选择下一个填充图案并赋与角度。
下面是自己编写的代码,功能不全而且不能运行,希望大师解决。
(defun c:suajiao(/ tline t-line thach t-hach tangle)
(vl-load-com)
(setq tline (car (entsel "\n选择直线")))
(setq thach (car (entsel "\n选择填充图案")))
(setq t-line (vlax-ename->vla-object tline))
(setq t-hach (vlax-ename->vla-object thach))
(setq tangle (vla-get-angle t-line))
(vla-put-GradientAngle t-hach tangle)
)
(defun c:tt ()
(setq ll(car (entsel "\n选择直线: "))
ht(car (entsel "\n选择填充图案: "))
rad (vla-get-angle (vlax-ename->vla-object ll))
ob(vlax-ename->vla-object ht)
)
(vla-put-PatternAngle ob rad)
(vla-Evaluate ob)
(princ)
) 填充图案角度属性搞错了,现在修改GradientAngle属性为PatternAngle,可以实现将直线角度刷给填充图案,但还缺少将多段线角度刷给填充图案,及连续刷下一个填充图案功能。 xyp1964 发表于 2015-9-8 17:39 static/image/common/back.gif
院长的代码很精简,结构清晰,新人学习了,感谢!! ;; tt(直线角度刷填充)
(defun c:tt ()
(setq ll(car (entsel "\n选择直线: "))
rad (vla-get-angle (vlax-ename->vla-object ll))
i -1
)
(princ "\n选择填充图案: ")
(setq ss (ssget '((0 . "HATCH"))))
(while (setq s1 (ssname ss (setq i (1+ i))))
(setq ob (vlax-ename->vla-object s1))
(vla-put-PatternAngle ob rad)
(vla-Evaluate ob)
)
(princ)
) xyp1964 发表于 2015-9-10 13:03 static/image/common/back.gif
功能又强了,够用了,感谢院长!!ssget选择集处理,搞不懂了 xyp1964 发表于 2015-9-8 17:39
:lol:lol:lol,厉害了院长大人
页:
[1]