乐筑天下

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

[编程交流] 使用lisp扩展线

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 06:23:12 | 显示全部楼层 |阅读模式
你好
我有一个交叉点钢筋线,我需要在其中延伸。我痛苦地通过“扩展”所有交点来重复这项任务
如何扩展所有选定的线?我如何限制投影?
我需要我的例行程序来做以下事情
 
[列表=1]
  • 拾取闭合多段线
  • 向内偏移3个单位
  • 将偏移线移动到名为“CONS”的层
  • 将多段线分解为直线
  • 扩展所有线(仅考虑“CONS”中的线和/或投影不超过x个单位)
    [/列表]
    在图中,我从右向左走了几步
     
    谢谢
    谢伊
    072312kler2gcpchrz1rcc.jpg
  • 回复

    使用道具 举报

    pBe

    32

    主题

    2722

    帖子

    2666

    银币

    后起之秀

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

    铜币
    211
    发表于 2022-7-6 06:28:11 | 显示全部楼层
    这只是一个简单的数学问题。
     
    可以使用钢筋和混凝土之间的间隙以及混凝土板的宽度来创建线。
    回复

    使用道具 举报

    218

    主题

    699

    帖子

    483

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1090
    发表于 2022-7-6 06:32:07 | 显示全部楼层
     
    我不确定我是否在跟踪你,
     
    你的意思是用polar()画图?如果是这样的话,我该如何判断何时延长和何时不延长?
    回复

    使用道具 举报

    pBe

    32

    主题

    2722

    帖子

    2666

    银币

    后起之秀

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

    铜币
    211
    发表于 2022-7-6 06:33:04 | 显示全部楼层
    这就是问题所在。您不需要延伸,而是“绘制”一条线,参考柱脚线的左下角和右上角。
     
    伪代码:
    选择外部多段线
    选择内部多边形
    获取板的宽度
    将外部多段线向内偏移3个单位
    获取最后一条实体线的坐标
    是的。。polar用于确定新线的点。
    回复

    使用道具 举报

    35

    主题

    2471

    帖子

    2447

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    174
    发表于 2022-7-6 06:37:57 | 显示全部楼层
    我相信你的素描是从右到左的,对吗?
    您可能感兴趣的另一个功能是INTERS。
    回复

    使用道具 举报

    pBe

    32

    主题

    2722

    帖子

    2666

    银币

    后起之秀

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

    铜币
    211
    发表于 2022-7-6 06:39:23 | 显示全部楼层
     
    不确定inters是如何在这里发挥作用的?你能用这种方法发布一个伪代码吗。
     
    无论如何。。。我要走了,这是一个演示
     
    1. (Defun c:demo ( / om pl pl2 dist ref mn mx h w a b c d)
    2. (setq om (getvar 'osmode))  
    3. (if (and
    4.        (setq pl  ([color="blue"]entsel [/color]"\nSelect Outer rim: "))
    5.        (setq pl2 ([color="blue"]entsel[/color] "\nSelect Inner rim: "))
    6.        (setq dist ([color="blue"]distance[/color]
    7.                     (vlax-curve-getClosestPointTo (car pl) (Cadr pl))
    8.                     (vlax-curve-getClosestPointTo (car pl2) (Cadr pl)))
    9.        )
    10.      )
    11. (progn
    12.        (command [color="blue"]"_offset" [/color]3 (Car pl) (Cadr pl2) "")
    13. ([color="blue"]vla-getboundingbox[/color] (setq e (vlax-ename->vla-object (entlast))) 'mn 'mx)
    14.        (setq mn  (vlax-safearray->list mn)
    15.              mx  (vlax-safearray->list mx)
    16.              w (- (car mx) (car mn))
    17.              h (- (cadr mx) (cadr mn))
    18.           dist (- dist 6))
    19. (foreach seg (list
    20.                  [color="blue"](list (setq a (polar mn 0 dist)) (polar a (/ pi 2.0) h))
    21.                (list (setq b (polar mn (/ pi 2.0) dist)) (polar b 0 w))
    22.                (list (setq c (polar mx pi dist)) (polar c (* pi 1.5) h))
    23.                (list (setq d (polar mx (* pi 1.5) dist)) (polar d pi w)))[/color]
    24.           (entmakex (list (cons 0 "LINE")
    25.                           (cons 10 (Car seg))
    26.                           (cons 11 (Cadr seg))
    27.                                  '(8 . "CONS")))
    28.          )
    29.        (vla-put-layer e "CONS")
    30.        )
    31.    )(princ)
    32. )
    回复

    使用道具 举报

    35

    主题

    2471

    帖子

    2447

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    174
    发表于 2022-7-6 06:44:02 | 显示全部楼层
    很高兴!
    考虑到以下草图中的符号:
     
     
    1. (setq point1st (polar pointITL (* 0.5 pi) theGap)
    2.      point3rd (polar pointITR (* 0.5 pi) theGap))
    3. (setq point2nd ([color=blue]inters[/color] point1st point3rd pointETL pointEBL nil)
    4.      point4th ([color=blue]inters[/color] point1st point3rd pointETR pointEBR nil))
    回复

    使用道具 举报

    pBe

    32

    主题

    2722

    帖子

    2666

    银币

    后起之秀

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

    铜币
    211
    发表于 2022-7-6 06:48:19 | 显示全部楼层
    我现在明白了。
    1. (inters point1st point3rd pointETL pointEBL[color="blue"] [b]nil[/b][/color])

     
    好吧,我被说服了。
     
    干杯MSasu
    回复

    使用道具 举报

    218

    主题

    699

    帖子

    483

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1090
    发表于 2022-7-6 06:50:53 | 显示全部楼层
    PbE,您的代码仅适用于矩形,im在结构级解决方案之后
     
    这是一个草图(也包括dwg)
    072314n1wvne84csnl8ss5.jpg
     
    我想在墙壁旁边提取钢筋副本,
    如果我想办法收集顶点1和10,我可以提取柱的钢筋,
    如果我收集顶点1和6,我可以为这部分墙生成钢筋
     
    黄色圆圈是生成钢筋所需的坐标,这些钢筋无法提取为法线顶点m,如6,7,8,9的钢筋,为了提取它,我需要得到6和9的投影(正如MSasu给我的思考食物)
     
    希望它有意义
    有办法编码吗?
     
    谢谢
    谢伊
    积分。图纸
    回复

    使用道具 举报

    pBe

    32

    主题

    2722

    帖子

    2666

    银币

    后起之秀

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

    铜币
    211
    发表于 2022-7-6 06:54:34 | 显示全部楼层
    我想我很快就知道怎么做了。但这次您将编写代码:
     
    下面是一个伪代码:
    选择pline。
    创建临时点[点图元]
    通过一次选择两个“点”实体来查找点。
    示例:基于图表
    (同时。。。。。
    在点1和10处选择2个点实体,将得到左下角和右上角的点[绘制线]
    在点5和2处选择2个点实体将在左上角和右下角为您提供点[绘制线]
    17 & 22, 17 & 21, 20 & 22.... [注意,这些数字并不代表实数点,仅用于讨论目的]
     
    现在,第6、7、8和9点需要另一种方法。
    如果所选点大于2,则表示全部四个点。。通过使用grread上下拖动指针,例程将“确定”下两个点的投影位置。。。
    ); while结束
     
    删除创建的所有点图元。
     
    现在,对于一种更“自动化”的方法,我需要就此回复您。我相信我能想出一些办法。。也许不是。
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-10 17:33 , Processed in 0.815193 second(s), 86 queries .

    © 2020-2025 乐筑天下

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