乐筑天下

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

[编程交流] 道路图案填充

[复制链接]

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-5 22:38:25 | 显示全部楼层 |阅读模式
我正在为道路图案填充创建lisp。这就是我目前所拥有的。
它通过选择一条基线并使用“测量”命令在其上插入一个块来工作。
创建块的选择集并分解它们。
然后选择一个轮廓,即偏移到内部(用户选择要偏移到的边。这可以默认为内部吗?)
然后,我需要创建一个分解线的选择集,并从偏移轮廓中修剪它们。
我正在努力解决最后几个问题,希望能得到一些帮助。
233831porysc3gyyyax6so.png
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-5 22:44:17 | 显示全部楼层
对不起,忘了包括我的代码。我早上要上班。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:45:37 | 显示全部楼层
首先,不要对粗线条使用块,使用plines额外的工作来修剪块。
 
请看命令“extrim”。它将修剪V形的内侧或外侧,通常不接触内侧线,因此使用“last”为修剪线偏移内侧,然后删除“last”应将其删除。
 
刚刚做了手工绘制岛绘制普林斯和复制等偏移岛内的外向L指出了所有完成E L完成。最主要的是选择pline方向的起点和终点,使其足够长以覆盖大多数岛屿。从头开始花了几秒钟。
 
有兴趣帮你的帖子我会用的。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-5 22:49:51 | 显示全部楼层
这是我目前掌握的代码。
 
  1. (defun C:hatch_lining (/ ang coords elist midp offsetted offsetted1 ofpt p1 p2 p3 pline side SUCE SUOM SUSM SUAB SUAD SUCL SUCR)
  2. (setq SUCE (getvar "cmdecho"))
  3. (setq SUOM (getvar "orthomode"))
  4. (setq SUSM (getvar "osmode"))
  5. (setq SUAB (getvar "angbase"))
  6. (setq SUAD (getvar "angdir"))
  7. (setq SUCL (getvar "clayer"))
  8. (setq SUCR (getvar "cecolor"))
  9. (setq vl1 (list
  10. (cons 0 "LAYER")  ;Name of entity
  11. (cons 100 "AcDbSymbolTableRecord")     ;Open Records
  12. (cons 100 "AcDbLayerTableRecord")     ;Locate Layer Table
  13. (cons 2 "CCC_LAYOUT_Proposed_Road_Lining_Hatching")  ;Name of Layer
  14. (cons 6 "Continuous")      ;Linetype
  15. (cons 62 7)       ;colour = light grey
  16. (cons 70 0)       ;state
  17. (cons 290 1)       ;1=plot, 0=Don't plot
  18.   )       ;End of entity list
  19. )
  20. (entmake vl1)
  21. (command "_.-layer" "_C" "3" "CCC_LAYOUT_Proposed_Road_Lining_Hatching" "")
  22. (setvar "clayer" "CCC_LAYOUT_Proposed_Road_Lining_Hatching")  
  23. (setvar "cecolor" "1")
  24. (setq pline(entsel "\nSelect an arc or a polyline: "))
  25. (setq coords (vl-remove-if (function not)
  26. (mapcar (function (lambda (x)
  27. (if (= 10 (car x))(cdr x))))
  28. elist))
  29. )
  30. (setq p2 (car coords)
  31. midp (mapcar (function (lambda( a b)(/ (+ a b) 2)))
  32. p1 p2)
  33. )
  34. (command "measure" pline "b" "hatch Lining" "y" "2" "")
  35. (command "_change" pline ""  "p" "Layer" "CCC_LAYOUT_Proposed_Road_Lining_Hatching" "color" "Bylayer" "")
  36. (setvar "qaflags" 1)
  37. (setq SS1 (ssget "X" (list '(0 . "INSERT") (cons 2 "hatch Lining"))))
  38. (command "explode" SS1 "")
  39. (setvar "qaflags" 0)
  40. (setq sel1 (ssget "x" '((8 . "CCC_LAYOUT_Proposed_Road_Lining_Hatching_Construction"))))
  41. (setq outpline(entsel "\nSelect a closed polyline: "))
  42. (setq inside(getpoint "\nPick an offset side: "))
  43. (command "._offset" 0.3 outpline inside "")
  44. (setq offsetted (entlast)
  45. elist (entget offsetted)
  46. )
  47. (setvar "cmdecho"   SUCE)
  48. (setvar "orthomode" SUOM)
  49. (setvar "osmode"    SUSM)
  50. (setvar "angbase"   SUAB)
  51. (setvar "angdir"    SUAD)
  52. (setvar "clayer"    SUCL)
  53. (setvar "cecolor"    SUCR)
  54. (princ)
  55. )
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-5 22:52:56 | 显示全部楼层
我曾尝试在lisp中使用命令调用“extrim”,但它不起作用。我怎么称呼它?我可以使用一组选择项来修剪吗?
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-5 22:58:29 | 显示全部楼层
我用乔·伯克的“cookiecutter2”手动操作,效果很好。我怎么能从我的日常生活中说出来呢?
 
实例
(命令“cookiecutter2”)
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-5 22:58:59 | 显示全部楼层
我把它整理好了。我添加到我的文件中,然后调用它。我注释掉了cookiecutter2中我不需要的部分。它工作得很好。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-5 23:03:13 | 显示全部楼层
这是完成的cde。我知道它不优雅,也很笨重,但它做了我需要它做的事情
 
我无法连接创建衬里的块,但它们非常简单。它们只是在两个方向上以45度角穿过原点的柱脚,并且在原点两侧约6m。
Hatch_衬里。lsp
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:06:01 | 显示全部楼层
更好的方法是创建平行线=V形的宽度使用extrim在岛的内部进行偏移,然后使用hatch solid,这样可以为弧侧提供完美的形状。
 
是的,像你一样,我无法让Extrim在纯lisp中工作(命令“Extrim”“last”pt1)给出未知命令,有人知道吗?
 
嗯,我可以使孵化自动相当容易。只需获取下一行的行端点的起始点,为图案填充拾取的起始点是半个起始点。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-5 23:11:14 | 显示全部楼层
比加尔,
如果图案填充是沿着直线的,平行线可以很好地工作,但我们大多数人不会这样。我在使用extrim时遇到了问题,我在web上的某个地方看到,首先在lisp中加载它作为不同的名称,然后根据需要调用该名称。但是我再也找不到了。即使我手动运行extrim,尽管我有问题。我发现cookiecutter2好多了。我把我不想要的部分注释掉了,效果很好。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:02 , Processed in 0.632939 second(s), 75 queries .

© 2020-2025 乐筑天下

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