乐筑天下

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

[编程交流] 使用LISP填充

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 06:49:37 | 显示全部楼层 |阅读模式
首先,很抱歉再次提起这件事。但我正在做最后的努力,尝试使用LISP实现hatch。正如你们许多人所记得的,这是一个完全自动化项目的一部分。不允许用户输入,所有操作都必须使用LISP代码完成。
 
在所附的图片上,你会看到我的quandry。左侧的图像是拍摄前的图像,右侧的图像是我想用hatch命令实现的拍摄后的图像。
 
绿色拉伸是使用LISP引入的块。绿色矩形是用LISP创建的。红色PLINE也使用LISP创建。完成后,我可以手动使用hatch命令,只需在左图中看到十字光标的地方单击一下,它就会完美地填充我想要的区域。所以我认为,很好,让我创建草图,然后在我的LISP程序中编写hatch命令,以选择相同的点,得到右侧所示的结果。
 
但hatch命令似乎不会执行此操作。。。使用LISP。其中一项工作通过手动方法非常简单,对于LISP来说似乎是一项简单的任务。
 
注意:我编写了代码,精心绘制了一条与绿色挤出轮廓密切相关的柱脚线,并将其与另一条柱脚线连接以形成闭合多边形。然后可以使用LISP对其进行填充。但这是一个痛苦的过程,随着客户在其产品线中添加更多的形状,很难编写代码来跟踪挤出型材。
 
这是不是使用LISP无法完成的事情?我发现有时候你可以用鼠标和键盘手动做一些你不能用LISP重新创建的事情,但这是非常少的情况。
074941nql1j1585ffrlz1o.jpg
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 06:59:09 | 显示全部楼层
大概
 
 
绘制(红色)多段线
 
插入块
 
vla getboundingbox(多段线+块)
 
缩放->边界框
 
缩放->0.9x
 
(命令“_-hatch”pt“\u P”“AR-CONC”“1.0”“0.0”“”)
 

(setq EL(entlast))
(命令“_-boundary”pt”)
(如果(/=EL(entlast))
(命令“_-hatch”“\u S”“\u L”“”“\u P”“AR-CONC”“1.0”“0.0”“”)
)
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:04:50 | 显示全部楼层
GP,谢谢。我尝试了第二种方法,效果很好。唯一的问题是它使边界线保持不变。当这一切都完成后,我想要的是在混凝土板的顶部和底部各有一条线。用户对此非常挑剔。
 
  1. (setq EL (entlast))
  2. (command "_-boundary" (polar pt1 pi (+ afrmwd 2)) "")
  3. (if (/= EL (entlast))
  4.   (command "_-hatch" "_S" "_L" "" "_P" "AR-CONC" "0.25" "0.0" "")
  5. )

 
我将对此进行更多的修补,看看是否可以得到用户要求的最终结果。最棒的是,我不必对挤出型材和边界进行所有繁琐的跟踪,甚至可以细化嵌入板并围绕其工作。
 
谢谢,如果你有任何其他建议,请告诉我。
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:15:08 | 显示全部楼层
好的,我想我终于找到了。我以前从未真正使用过边界命令。无论如何,这是一个选择多段线和边界线的问题,然后对它们都进行(entdel)。我现在可以在板的顶部和底部画一些简单的线,这样这些挑剔的用户就能得到他们想要的。。。至少在这个问题上。
 
谢谢GP。这是一个很好的建议。
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 07:19:42 | 显示全部楼层
很乐意帮忙。
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:34:22 | 显示全部楼层
我是疯了还是怎么了。。。。?在学习LISP的开始,我被告知,有一些编码方法可以证明是不稳定的。。。这有时是有效的,有时是无效的。这是处理LISP编程的困难之一,尤其是当我的客户看到该死的东西在工作,然后第二天他们给我一个错误列表,其中包括我前一天刚刚工作的东西。
 
  1. (defun slab1 (_Point1  _Point2        _CPoint1 _CPoint2 _Left           _Right
  2.       _Up      _Down        /         _h1          _l1           l2
  3.       _pl1     _pl2        _r1
  4.      )
  5. (command "._CLAYER" "Concrete")
  6.      (command "._PLINE"
  7.        (polar _Point1 _Down (- _afrmdp1 0.4375))
  8.        (polar _Point1 _Down (- slabdp 0.4375))
  9.        (polar (polar _Point1 _Down (- slabdp 0.4375)) _Left 4)
  10.        (polar (polar _Point1 _Down 1.0625) _Left (+ afrmwd 3))
  11.        (polar (polar _Point1 _Left (+ afrmwd 3)) _Up 0.4375)
  12.        (polar (polar _Point1 _Left afrmwd) _Up 0.4375)
  13.        "")
  14.      (setq _pl1 (entlast))
  15. (command "_-boundary" (polar _Point1 _Left (+ afrmwd 2)) "")
  16. (setq EL (entlast))
  17. (if (/= EL (entlast))
  18.    (command "_-hatch" "_S" "_L" "" "_P" "AR-CONC" "0.25" "0.0" "")
  19.    ); end if
  20. (setq _h1 (entlast))
  21. (entdel EL)
  22. (entdel _pl1)
  23.      ; DRAW THE TOP OF THE SLAB BACK IN
  24.      (command "._LINE" (polar (polar _Point1 _Left afrmwd) _Up 0.4375)
  25.                        (polar (polar _Point1 _Left (+ afrmwd 3)) _Up 0.4375) "")
  26.      (setq _pl1 (entlast))
  27.      ; DRAW THE SIDE AND THE BOTTOM OF THE SLAB BACK IN
  28.      (command "._PLINE" (polar _Point1 _Down (- _afrmdp1 0.4375))
  29.                        (polar _Point1 _Down (- slabdp 0.4375))
  30.                        (polar (polar _Point1 _Down (- slabdp 0.4375)) _Left 4) "")
  31.      (setq _pl2 (entlast))
  32.      (command "._MIRROR" _pl1 _pl2 _h1 "" _CPoint1 _CPoint2 "")
  33. (princ)  
  34. ); end slab1

 
舱口似乎出了问题。我只能假设它的其余部分是有效的,因为当它完成时,有一个漂亮的混凝土舱口,周围留有足够的线来形成板的部分剖视图,或者有一个剖视图,但舱口只是一堆斜线,几乎看起来像是AR-CONC舱口。
 
我写这篇文章是为了处理图纸的前视图和侧视图。这就是_Up,_Down,等等。。。都是关于。这有多个条件,所以我把它做成了模块。我这样称呼例行程序:
有些时候,它运行得很好。然后我转到代码的另一部分,它调用了几乎相同的例程,但它不起作用。然后我回到5分钟前的第一个程序,它工作得很好,现在它也像第二次尝试一样把舱口搞砸了。
 
Q: 这是一种长期不稳定的代码吗?还是我只需要去检查一下脑袋?
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:41:55 | 显示全部楼层
正如我之前提到的,我宣誓支持NDA的左右两面,所以我可以发布的代码和图片数量有限。但我刚刚在这个问题上观察到了一些有趣的事情。左边的图像是我在出错时得到的结果。右边的图片是我在正确的时候得到的。图案填充用软管冲洗,边界命令中的一些线不会被entdel命令擦除。这与产生这两个的代码完全相同。唯一的区别是左边的一个是全速运行的,右边的一个是在代码开始之前用一个断点运行的,我用F8键逐步完成了它。
 
今天早些时候,这辆车全速行驶,一切都很好。我现在正在对此进行更多测试,因为最终结果,当它正确时,正是这里的用户所要求的。
074942o6tn62kzknd6kkpt.jpg
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 07:46:35 | 显示全部楼层
要使用边界命令,所使用的几何体必须完全显示在屏幕上。
 
 
 
 
然后怎么可能?
 
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:51:52 | 显示全部楼层
GP,再次感谢。我确实发现,像你一样,要使其持续工作,唯一的方法就是使用“缩放”命令。让我不舒服的是,它似乎在没有缩放命令的情况下也能工作,但迟早会像它那样滑出轨迹。所以我现在在块中插入了更多的缩放命令。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 15:10 , Processed in 0.797803 second(s), 73 queries .

© 2020-2025 乐筑天下

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