无厘崖 发表于 2015-9-8 17:39:22

求助将直线角度刷给填充图案

本帖最后由 无厘崖 于 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)
)

xyp1964 发表于 2015-9-8 17:39:23

(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)
)

无厘崖 发表于 2015-9-8 18:41:47

填充图案角度属性搞错了,现在修改GradientAngle属性为PatternAngle,可以实现将直线角度刷给填充图案,但还缺少将多段线角度刷给填充图案,及连续刷下一个填充图案功能。

无厘崖 发表于 2015-9-9 20:36:47

xyp1964 发表于 2015-9-8 17:39 static/image/common/back.gif


院长的代码很精简,结构清晰,新人学习了,感谢!!

xyp1964 发表于 2015-9-10 13:03:28

;; 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)
)

无厘崖 发表于 2015-9-11 20:57:21

xyp1964 发表于 2015-9-10 13:03 static/image/common/back.gif


功能又强了,够用了,感谢院长!!ssget选择集处理,搞不懂了

999999 发表于 2022-3-31 10:57:02

xyp1964 发表于 2015-9-8 17:39


:lol:lol:lol,厉害了院长大人
页: [1]
查看完整版本: 求助将直线角度刷给填充图案