乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 18|回复: 14

[编程交流] 帮助:Lisp填充多个c

[复制链接]

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 20:20:06 | 显示全部楼层 |阅读模式
查找hatch lisp以窗口选择多条闭合多段线并立即对其进行图案填充,但会根据当前图案填充设置生成单个图案填充对象。
 
遇到此代码,但是否无法基于当前图案填充设置
 
  1. (defun c:mhatch (/ ang do-it doc hatch oname pname scl space ss)
  2. (if (setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"))))
  3. (progn
  4. (setq scl (getvar "hpscale")
  5. ang (getvar "hpang")
  6. pname (getvar "hpname")
  7. hpassoc (if (= (getvar "hpassoc") 1)
  8. :vlax-true
  9. :vlax-false)
  10. doc (vla-get-activedocument
  11. (vlax-get-acad-object))
  12. space (if (= (getvar "cvport") 1)
  13. (vla-get-paperspace doc)
  14. (vla-get-modelspace doc)
  15. )
  16. )
  17. (vlax-for ent (vla-get-activeselectionset doc)
  18. (setq do-it nil
  19. oname (strcase (vla-get-objectname ent)))
  20. (cond ((vl-string-search "CIRCLE" oname)
  21. (setq do-it t)
  22. )
  23. ((and (vl-string-search "LINE" oname)
  24. (eq (vla-get-closed ent) :vlax-true)
  25. )
  26. (setq do-it t)
  27. )
  28. ((equal (vlax-curve-getstartpoint ent)
  29. (vlax-curve-getendpoint ent)
  30. 1e-6)
  31. (setq do-it t)
  32. )
  33. )
  34. (if do-it
  35. (progn
  36. (setq hatch (vlax-invoke space 'addhatch acHatchObject pname hpassoc))
  37. (vlax-invoke hatch 'appendouterloop (list ent))
  38. (vlax-put hatch 'patternangle ang)
  39. (vlax-put hatch 'patternscale scl)
  40. (vla-evaluate hatch)
  41. )
  42. )
  43. )
  44. )
  45. )
  46. (princ)
  47. )

 
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:27:34 | 显示全部楼层
你好
 
我刚刚编写了这个程序,并将其添加到我的Lisp框中
 
  1. (defun c:Test  (/ h _doc ss)
  2. ;;;        Tharwat 20.01.2014        ;;
  3. (princ "\n Select closed objects to hatch as per current hatch settings ")
  4. (if (setq _doc (vla-get-activedocument (vlax-get-acad-object))
  5.            ss   (ssget '((-4 . "<OR")
  6.                          (0 . "CIRCLE,ELLIPSE")
  7.                          (-4 . "<AND")
  8.                          (0 . "LWPOLYLINE")
  9.                          (-4 . "&=")
  10.                          (70 . 1)
  11.                          (-4 . "AND>")
  12.                          (-4 . "OR>"))))
  13.    (vlax-for o  (vla-get-activeselectionset _doc)
  14.      (setq h (vlax-invoke
  15.                (vla-get-block (vla-get-activelayout _doc))
  16.                'addhatch
  17.                acHatchObject
  18.                (getvar "hpname")
  19.                (if (= (getvar "hpassoc") 1)
  20.                  :vlax-true
  21.                  :vlax-false)))
  22.      (vlax-invoke h 'appendouterloop (list o))
  23.      (vlax-put h 'patternangle (getvar "hpang"))
  24.      (vlax-put h 'patternscale (getvar "hpscale"))
  25.      (vla-evaluate h)
  26.      )
  27.    )
  28. (princ)
  29. )(vl-load-com)
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 20:32:43 | 显示全部楼层
嗨,塔尔瓦特。
 
测试了它&不知何故,它不会遵循非关联的当前设置。
 
使用LISP进行图案填充时,仍将图案填充为关联。
 
有什么建议吗?
 
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:33:42 | 显示全部楼层
使用vlax invoke函数时,关联的参数似乎没有任何意义
 
试试这个,让我知道
 
  1. (defun c:Test  (/ soc h _doc ss)
  2. ;;;        Tharwat 20.01.2014        ;;
  3. (princ
  4.    "\n Select closed objects to hatch as per current hatch settings ")
  5. (if (setq _doc (vla-get-activedocument (vlax-get-acad-object))
  6.            soc (if (= (getvar "hpassoc") 1)
  7.                  :vlax-true
  8.                  :vlax-false)
  9.            ss   (ssget '((-4 . "<OR")
  10.                          (0 . "CIRCLE,ELLIPSE")
  11.                          (-4 . "<AND")
  12.                          (0 . "LWPOLYLINE")
  13.                          (-4 . "&=")
  14.                          (70 . 1)
  15.                          (-4 . "AND>")
  16.                          (-4 . "OR>"))))
  17.    (vlax-for o  (vla-get-activeselectionset _doc)
  18.      (setq h (vlax-invoke
  19.                (vla-get-block (vla-get-activelayout _doc))
  20.                'addhatch
  21.                acHatchObject
  22.                (getvar "hpname")
  23.                soc))
  24.      (vlax-invoke h 'appendouterloop (list o))
  25.      (vla-put-AssociativeHatch h soc)
  26.      (vlax-put h 'patternangle (getvar 'hpang))
  27.      (vlax-put h 'patternscale (getvar 'hpscale))
  28.      (vla-evaluate h)
  29.      )
  30.    )
  31. (princ)
  32. ) (vl-load-com)
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 20:39:07 | 显示全部楼层
嗨,塔尔瓦特。
 
我现在工作。
 
但我意识到一些多段线不是闭合的,而是看起来很近(不知道有这样的事情),正常的hatch命令可以选择。
 
您能包括那些可以通过普通hatch命令选择的吗?
 
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:42:27 | 显示全部楼层
你为什么引用每一个回复?只要一个简单的回复就足够了,如果你没有回复到特定的点,请从你的回复中删除这两个程序,以保持线程的表示至少看起来很好。
 
 
用你的选择集函数替换我的选择集函数。
 
如。
 
  1. (setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"))))

 
仅使用高亮显示的代码。
 
  1. (setq _doc (vla-get-activedocument (vlax-get-acad-object))
  2.            soc (if (= (getvar "hpassoc") 1)
  3.                  :vlax-true
  4.                  :vlax-false)
  5. [color="red"]            ss   (ssget '((-4 . "<OR")
  6.                          (0 . "CIRCLE,ELLIPSE")
  7.                          (-4 . "<AND")
  8.                          (0 . "LWPOLYLINE")
  9.                          (-4 . "&=")
  10.                          (70 . 1)
  11.                          (-4 . "AND>")
  12.                          (-4 . "OR>")))[/color]
  13. )
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 20:47:35 | 显示全部楼层
罗杰。将清理我以前的帖子。
 
代码替换了吗&我在加载lisp时遇到了这个错误
 
  1. ; error: malformed list on input

 
更换后我的代码是
 
 
  1. (defun c:Test  (/ soc h _doc ss)
  2. ;;;    Tharwat 20.01.2014    ;;
  3. (princ
  4.    "\n Select closed objects to hatch as per current hatch settings ")
  5. (if (setq _doc (vla-get-activedocument (vlax-get-acad-object))
  6.            soc (if (= (getvar "hpassoc") 1)
  7.                  :vlax-true
  8.                  :vlax-false)
  9.            (setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"))))
  10. )
  11.    (vlax-for o  (vla-get-activeselectionset _doc)
  12.      (setq h (vlax-invoke
  13.                (vla-get-block (vla-get-activelayout _doc))
  14.                'addhatch
  15.                acHatchObject
  16.                (getvar "hpname")
  17.                soc))
  18.      (vlax-invoke h 'appendouterloop (list o))
  19.      (vla-put-AssociativeHatch h soc)
  20.      (vlax-put h 'patternangle (getvar 'hpang))
  21.      (vlax-put h 'patternscale (getvar 'hpscale))
  22.      (vla-evaluate h)
  23.      )
  24.    )
  25. (princ)
  26. ) (vl-load-com)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:50:30 | 显示全部楼层
否,请阅读此修改并将其与您上次的回复进行比较。
 
  1. (defun c:Test  (/ soc h _doc ss)
  2. ;;;    Tharwat 20.01.2014    ;;
  3. (princ
  4.    "\n Select closed objects to hatch as per current hatch settings ")
  5. (if (setq _doc (vla-get-activedocument (vlax-get-acad-object))
  6.            soc  (if (= (getvar "hpassoc") 1)
  7.                   :vlax-true
  8.                   :vlax-false)
  9.            ss   (ssget '((0 . "LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE")))
  10.            )
  11.    (vlax-for o  (vla-get-activeselectionset _doc)
  12.      (setq h (vlax-invoke
  13.                (vla-get-block (vla-get-activelayout _doc))
  14.                'addhatch
  15.                acHatchObject
  16.                (getvar "hpname")
  17.                soc))
  18.      (vlax-invoke h 'appendouterloop (list o))
  19.      (vla-put-AssociativeHatch h soc)
  20.      (vlax-put h 'patternangle (getvar 'hpang))
  21.      (vlax-put h 'patternscale (getvar 'hpscale))
  22.      (vla-evaluate h)
  23.      )
  24.    )
  25. (princ)
  26. )(vl-load-com)
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 20:54:41 | 显示全部楼层
好啊我想我也做错了什么。明天我回到办公室时,我会比较它们,看看哪里出了问题,并测试代码。然后将反馈。
 
 
再次感谢兄弟。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:58:44 | 显示全部楼层
祝你好运
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 09:15 , Processed in 0.850468 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表