乐筑天下

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

[编程交流] 闭合多段线的图案填充

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:09:56 | 显示全部楼层 |阅读模式
我对lisps很陌生,但我认为我已经把它变得比需要的更复杂了一点。
 
我试图围绕一组多段线创建一个偏移框,然后对该框进行图案填充。我已经成功地使它适用于四个用户指定的点,但我正在寻找更多。
 
我希望能够运行lisp,绘制一条具有无限弯曲和角度的多段线,然后让它填充生成的偏移框。
 
如果有人有任何优化想法,我很乐意听听
沟槽lsp
080959m99902090pivqzk7.jpg
081001pk5au1naxz1aq6z5.jpg
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 07:25:51 | 显示全部楼层
欢迎来到CADTutor。
 
你可以很容易地定义一个多行样式,它会画出你的线条,
你可以任意设置直线对正,我猜是居中。
它将动态地同时创建所有三条线,要么使用端盖
或者不是。
 
作为lisp的学生,你可能想访问李的网站,你一定能学到很多东西
学习他美妙的Lisp程序。
 
他有一个可能为你目前正在开发的Lisp程序提供一些线索,
http://www.lee-mac.com/dynamicoffset.html
 
谢谢李!
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 07:31:42 | 显示全部楼层
尝试,在宽度>0.00的LWD多段线上
(孔夫塔蒂斯)
 
  1. (defun C:PL2CAN ()
  2. (setvar "PEDITACCEPT" 1)
  3. (setvar "CMDECHO" 1)
  4. (setq gru(ssget '((0 . "LWPOLYLINE")))
  5.       index -1
  6.       modelspace(vla-get-Modelspace (vla-get-activedocument(vlax-get-acad-object)))
  7. )
  8. (setvar "HPNAME" "ANSI31")
  9. (setvar "HPSCALE" 1)
  10. (repeat (sslength gru)
  11. (setq spessore(vla-get-ConstantWidth (vlax-ename->vla-object (ssname gru (setq index(1+ index))))))
  12. (vla-put-ConstantWidth (vlax-ename->vla-object (ssname gru index)) 0.0)
  13. (setq ent1(car(vlax-safearray->list (vlax-variant-value (vla-offset (vlax-ename->vla-object (ssname gru index)) (/ spessore 2))))))
  14. (setq ent2(car(vlax-safearray->list (vlax-variant-value (vla-offset (vlax-ename->vla-object (ssname gru index)) (-(/ spessore 2)))))))
  15. (setq coord1 (variant2lista (vla-get-coordinates ent1) 2))
  16. (setq coord2 (variant2lista (vla-get-coordinates ent2) 2))
  17. (cond
  18.   ((eq (vla-get-Closed ent1) :vlax-true)
  19.    (vl-cmdf "_HATCH" "" "" "" (vlax-vla-object->ename ent1)(vlax-vla-object->ename ent2) "")
  20.   )
  21.   ((eq (vla-get-Closed ent1) :vlax-false)
  22.    (vla-addLine modelspace (vlax-3d-point (car coord1))(vlax-3d-point (car coord2)))
  23.    (vl-cmdf "_PEDIT" (entlast) "_J" (vlax-vla-object->ename ent1)(vlax-vla-object->ename ent2) "" "_CL" "")
  24.    (vl-cmdf "_HATCH" "" "" "" (entlast) "")
  25.   )
  26. )
  27. )
  28. )
  29. ;;; ***************************FUNZIONE VARIANT2LISTA*******************************
  30. ;;; Trasforma un variant in una lista a gruppi con numero elementi per gruppo
  31. (defun variant2lista (listavariant numero / listaparz listafin)
  32. (setq listaparz '()
  33.       listafin   '()
  34. )
  35. (foreach elemento (vlax-safearray->list (vlax-variant-value listavariant))
  36. (setq listaparz (append listaparz (list elemento)))
  37. (if (= (length listaparz) numero)
  38.   (setq listafin  (append listafin (list listaparz))
  39.     listaparz '()
  40.   )
  41. )
  42. )
  43. listafin
  44. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:38:06 | 显示全部楼层
编写代码看起来很有趣。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:48:07 | 显示全部楼层
我的版本:
 
OffHatchV1-0。lsp
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:54:02 | 显示全部楼层
 
李,那看起来正是我想要的。谢谢你们其他人。这个周末我还没有拿到考卷,但我会在周一把它们都考出来。
 
再次感谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:06:36 | 显示全部楼层
 
不客气,我写这篇文章很开心。
让我知道你进展如何!
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:10:44 | 显示全部楼层
 
我很确定你做到了,李
 
这里有一个毫无意义的普通代码来打发时间
 
  1. (defun c:hatsoff ( / ss e ent fp sp el el2 elj)
  2. (setvar 'cmdecho 0)      
  3.             
  4. (if     (and  (setq dist (getdist "\nEnter Offset Distance: "))  
  5.                      (setq ss (ssget '((0 . "LWPOLYLINE")))))
  6. (repeat (sslength ss)
  7.    (if (and
  8. (setq e (ssname ss 0))
  9. (setq ent (entget e))
  10. (setq  fp (assoc 10 ent) ent (member fp ent)
  11.               sp (cdr (assoc 10 (cdr ent))) fp (cdr fp))
  12. (setq fp (polar fp (setq ang (+ (angle fp sp) (/ pi 2.0)))  dist))
  13. (not (command "_offset"  dist e "_non" fp "E"))
  14. (setq el (entlast))
  15. (not (eq el e))
  16. (not (command "_offset"  dist e "_non" (setq sp (polar fp (+ ang pi) (+ dist dist))) "E"))
  17. (setq el2 (entlast))
  18. (not (eq el el2)))
  19.         (progn
  20.                (if (= 1 (cdr (assoc 70 (entget el))))
  21.                 (command "_hatch" "ANSI31" "" "" "_s" el el2 "")
  22.                 (progn  
  23.                 (command "_pline" "_non" fp "_non" sp "")
  24.                 (command "_pedit" "_multiple" el el2 (entlast) "" "_join" "" "")
  25.                 (setq elj (entget (entlast)))
  26.                 (entmod (subst '(70 . 1) (assoc 70  elj) elj))
  27.                        (setvar 'Hpname "ANSI31")
  28.                 (command "_hatch" "" "" ""  (entlast) "")
  29.                 )
  30.                   )
  31.         )
  32.        )
  33. (ssdel e ss)
  34.      )
  35. )
  36.              (princ)
  37.             )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 10:25 , Processed in 0.542661 second(s), 71 queries .

© 2020-2025 乐筑天下

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