乐筑天下

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

[编程交流] 如何计算t块

[复制链接]

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 17:41:21 | 显示全部楼层 |阅读模式
所以我一直在开发一个LISP例程来帮助自动化停车布局,尤其是当有曲线时。我使用了measure命令和offset命令。我遇到的问题是,只有当pline是一个方向时,它才有效。如果将pline反转,则由于我定义块的方式,pline无法正常工作(我在LISP例程中根据用户想要的尺寸定义块)。我想不出一种方法来判断我是应该使用块1(方向正常)还是块2(旋转180度以确保它给出正确的结果)。谁能想出一个简单的方法来判断使用哪个区块。附件是一张显示我的问题的图片。
184122hb581qr2b5udd0t2.jpg
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:47:56 | 显示全部楼层
你好
可能使用RPL。lsp反转多边形方向?
在网上搜索。
我希望它适合你。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 17:56:42 | 显示全部楼层
如果总是将LWDOLYLINE作为路径曲线,则可以检查其顺时针p方向,并根据该方向决定使用哪个版本的块进行测量。。。
 
  1. (defun ListClockwise-p (lst / z vlst)
  2.    (vl-catch-all-apply 'minusp
  3.      (list
  4.        (if
  5.          (not
  6.            (equal 0.0
  7.              (setq z
  8.                (apply '+
  9.                  (mapcar
  10.                    (function
  11.                      (lambda (u v)
  12.                        (- (* (car  u) (cadr  v)) (* (car  v) (cadr  u)))
  13.                      )
  14.                    )
  15.                    (setq vlst
  16.                      (mapcar
  17.                        (function
  18.                          (lambda (a b) (mapcar '- b a))
  19.                        )
  20.                        (mapcar (function (lambda (x) (car lst))) lst)
  21.                        (cdr (reverse (cons (car lst) (reverse lst))))
  22.                      )
  23.                    )
  24.                    (cdr (reverse (cons (car vlst) (reverse vlst))))
  25.                  )
  26.                )
  27.              ) 1e-6
  28.            )
  29.          )
  30.          z
  31.          (progn
  32.            (prompt "\n\nChecked vectors are colinear - unable to determine clockwise-p of list")
  33.            nil
  34.          )
  35.        )
  36.      )
  37.    )
  38. )

 
更多信息:
http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/polyline-direction-clockwise-or-counterclockwise/td-p/6050612
 
HTH,M.R。
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:02:25 | 显示全部楼层
马克,这是一个很酷的惯例。所以我试图找出它到底返回了什么值,以及它提供了什么类型的输入。我的选择是使用entsel进行的,我试图
但这不是正确的实体类型。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:10:46 | 显示全部楼层
它使用点列表(顶点列表-或沿其长度的点),以正确的顺序从LWPOLYLINE。。。
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:12:05 | 显示全部楼层
哦,明白了,我想我现在明白了。谢谢Marko!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:21:15 | 显示全部楼层
该函数可以稍微简化-请参阅此处的LM:list顺时针-p函数。
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:27:27 | 显示全部楼层
谢谢李,我应该先查一下你的网站。我还有一个快速的问题,关于如何在pline开始时将pline的开始部分缩短一定量。我知道如何使用vlax曲线函数获取起点,我尝试通过LISP使用length命令对其进行调整,为其提供起点和增量(在本例中为负增量),但我似乎无法使其正常工作。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:30:28 | 显示全部楼层
 
我将检查起始段是直线段还是弧段,根据要减去的长度或弧长计算起始顶点的新坐标(同时删除位于要删除的多段线上的任何中间顶点),计算新的凸出数据(如果使用弧段),然后输入修改的DXF数据。
 
基本上与我在双扩展程序中使用的方法相反。
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:36:16 | 显示全部楼层
李,非常感谢你的帮助!所以我一直在处理这段代码,它继续变得更加复杂。现在,当用户选择弧的内侧时,它始终有效,但当用户选择弧的外侧时,它不能正常工作。附件是一个图像,以显示我的意思。我想我需要做的是做一个测试,测试用户是否选择了内部或外部,如果是这样,我有两个不同的代码(我想不出当一个柱脚线上有两个不同的弧向不同的方向弯曲时怎么做,我想这会变得复杂)。有可能做这样的测试吗?
184124ifq0hlrfq3fenbug.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 04:51 , Processed in 0.998253 second(s), 75 queries .

© 2020-2025 乐筑天下

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