用于绘制交点的Lisp
你好(第一篇文章,可能不是最后一篇)。我目前正在编写一段在AutoCAD 2013中使用的代码,这将为我节省大量时间,但我遇到了一个障碍,我对LISP还不够精通,无法解决这个问题(我对我的工作和整个Autodesk产品都很陌生)。
基本上,我拥有的是一个包含两条相交线(构成一个“X”)和一些文本的块,我们使用这些文本来显示我们网站上各个位置的高程。我需要提取两条线之间交点的位置信息,以便将其输入到我的其余代码中。理想情况下,如果只需点击块就可以获得这些信息,那将是非常棒的。目前,我们必须手动识别点,有时在非常繁忙的图形中,有许多非常接近的交点,这是一个难题。
谢谢大家,烤箱里的网络饼干是给任何能帮上忙的人的。 您只是希望lisp运行ID命令,还是希望将ID命令的结果生成一个文本字符串,并在选择点后放置?
需要更多关于你需要什么的信息 很简单,你画了块,所以你知道几何
只需取插入点,使用Polar all done算出ID点距离和角度!
现在,对于棘手的一点,但很容易再次旋转块再次几何答案,你们的点总是一个固定的径向距离。
第二个困难的部分是你重新缩放,很容易计算出ID点。
; very simple example nothing smart no checks
(defun AH:blockpt ( / obj blkins)
(setq obj (entsel))
(setq blkins (assoc 10 (entget (car obj))))
; do your bit here (setq newpt (polar blkins ang dist))
)
(AH:blockpt)
我需要的是能够点击块上的任何地方,让它抓取并存储块内两条线之间的交点位置。一旦它存储在某个happy变量中,我要对这些坐标做大约一千件其他事情,但代码已经编写好了。问题是,根据块中另一项(文本字符串)的几何形状和位置,插入点并不总是位于相对于这两条线交点的相同位置。我希望块以某种方式存储其中所有单个对象的记录,并且有方法从块中提取此类信息(例如每条线的起点和终点,以便我可以计算它们的交点)。
这更有意义吗? 如果可能,将dwg示例与块一起发布。。。
亨里克 如果两条线的交点正在标记点位坡的位置,则块的插入点位于该交点是合乎逻辑的。
但有些人的看法不同 所以,我说谎了,我的问题变了。
随附的是LISP当前所在位置的副本,以及示例图形。
简短版本:理想情况下,使用此LISP时,让我单击两个块中的每个块,从这些块中获取一个属性(一个文本字符串,转换为浮点),并基于这些浮点(高程点),计算两个块之间的高程变化和等高线的位置,特别是每个块中“X”的中心之间的距离,然后绘制这些等高线的位置。
目前存在的问题:LISP需要抓取块中每个X的中心点作为两个比较点。相反,它看起来像是在抓取块中文本的插入点。因此,当它试图绘制等高线的位置时,它处于禁用状态。
示例文件:包含我们使用的该块的8个主要变体。它还包含两个最终结果的示例,顶部一个显示了如果它工作,理想情况下会是什么样子(使用更旧、效率更低的LISP版本完成),底部一个显示了它当前的外观。
感谢您的帮助。这将为我节省大量的时间。
顺便说一句,如果有人也能告诉我如何使用我从文本中提取的浮点值,并修改块的“Z”位置以匹配该浮点值,我会更加激动。
ELL-复制。lsp
样品图纸 你看过我贴的X是2行吗?它不能移动到块内的新点。它总是相对于插入位置,与你的文本相同!暂时忽略动态块。如果是不同的块,则只需添加其他块的规则列表。 附件是你的代码,没有真正修改,只是修复插入点。。。
对不起,今天我没有多少空闲时间。
希望有帮助
亨里克
ell_V1。LSP
页:
[1]