RyanAtNelco 发表于 2022-7-6 14:38:55

Z文字在尺寸中的位置

你好
 
我对LISP编程非常陌生,终于有了一个LISP的想法,它可以清除我处理的许多绘图,但我不知道从哪里开始。我试着做一些可以选择所有维度并改变文本Z值的东西。维度属性中似乎没有Z位置字段,但是当我列出维度时,有一个Z位置。我之所以要这样做,是因为当Z值不完全为零时,文本显示不正确。我不知道如何将这些翻译成代码。任何信息都很好,我想试着自己写这篇文章,这样我就可以学习编写例程的过程。
 
 
提前感谢!

Freerefill 发表于 2022-7-6 14:52:01

当我开始深入操作实体时,我使用了(subst)、(entmod)和(entupd)
 
基本上,键入(entget(car(entsel))时得到的列表是AutoCAD识别为图元的列表,您可以修改该列表以修改图元。
 
以下是我曾经帮助过我的:
 
http://www.jefferypsanders.com/autolispintr_ent.html
 
他几乎教会了我所知道的一切,直到我找到了AutoCAD LISP帮助文件和这个论坛。

Lee Mac 发表于 2022-7-6 14:55:06

有多种方法可以实现这一点,具体取决于以下几点:
 
[列表]
[*]是否希望LISP自动选择所有标注文字?
[/列表]
[列表]
[*]您希望用户选择每个维度文本,还是使用窗口选择方法?
[/列表]
[列表]
[*]要继续使用Visual LISP还是普通LISP
[/列表]
让我知道你希望如何继续,我会尽我所能帮助你
 

lpseifert 发表于 2022-7-6 15:02:16

我很好奇(李)
使用vla get Textposition创建变量,vlax variant value创建safearray,vlax safearray->list创建列表。您可以操纵此列表来创建新列表,以强制Z为零。
如何将新列表返回到使用vla put Textposition的变体?
(还是我的做法完全错了?)

Lee Mac 发表于 2022-7-6 15:09:02

拉里,你在正确的轨道上
 

(defun c:dimtxt(/ dEnt dimObj tPos)
(vl-load-com)
(while (and (setq dEnt (car (entsel "\nSelect Dimension: ")))
             (eq "DIMENSION" (cdadr (entget dEnt))))
   
   (setq dimObj (vlax-ename->vla-object dEnt))

   (setq tPos (vlax-safearray->list
                (vlax-variant-value
                  (vla-get-TextPosition dimObj))))

   (vla-put-TextPosition dimObj
   (vlax-3D-point (list (car tPos) (cadr tPos) 0.0))))

(princ))

Lee Mac 发表于 2022-7-6 15:13:49

然而,在测试时,这似乎并没有更新维度…,:呵呵:

RyanAtNelco 发表于 2022-7-6 15:23:20

哇,谢谢你的快速回复!我将在周末消化这些材料。

lpseifert 发表于 2022-7-6 15:26:48

没有,但现在我知道如何使点列表成为变体。谢谢

RyanAtNelco 发表于 2022-7-6 15:32:47

与vanilla lisp相比,使用visual lisp有哪些优势?视觉更容易学习吗?

Lee Mac 发表于 2022-7-6 15:42:18

 
使用Visual LISP可以实现更多功能,因为它允许更多地访问程序结构,而Vanilla LISP没有那么多功能(而且更旧)。
 
我要说的是,Vanilla LISP更容易学习,但当您了解一段时间后,Visual LISP更直观。
页: [1]
查看完整版本: Z文字在尺寸中的位置