DVDM 发表于 2022-7-6 15:04:02

Lisp和视口定位

大家好,
我目前正在开发一组lisp例程,以使生活变得更轻松,并帮助我们完成Autocad中一些更平凡的任务。不幸的是,我的lisp知识非常有限。虽然我可以在一定程度上编辑现有代码,或在自己的内部实现其他lisp例程,但我自己的例程实际上只不过是一个简单的宏;一系列命令和预定义参数。
我想扩展以下例程,以包括几个自动步骤:
(定义C:Y180()
(命令“ucs”“y”“180”)
(命令“plan”“c”)
)
从代码中可以看出,我想通过视口从另一侧查看我的模型。
但问题是,在执行“plan”“c”命令后,它会进行最大化,而我只想返回到与原来相同的比例因子和视口内的位置。(我发现了一个lisp例程,负责在前后解锁/锁定视口,我正计划使用它)
如果LISP能处理好这件事就太好了,但我不知道该怎么办。对于初学者,我不知道从哪里获取定义视图的参数(中心X、中心Y、中心Z、高度、宽度),如果它们可以读取的话(在视口的“属性”面板中,这些参数是灰色的,不可编辑)。
一旦我知道了这一点,我想应该有一种方法在执行“ucs”和“plan”命令之前读取和存储这些参数,然后再将它们重新应用到视口。
因为这些centerXYZ/height/width参数基本上也定义了比例,所以我认为不需要在例程的某个地方读取视口比例。
最终,如果我可以选择所有我想进行这种处理的视口,然后一键完成(一些布局最多有20个视口),这将是理想的选择,但我恐怕我在这里想得太超前了。一个接一个地做这件事已经很棒了。
我想的方向对吗?有人有什么建议吗?

David Bethel 发表于 2022-7-6 15:14:52

我想我会这样做
 
这仍然需要一系列调整-大卫

DVDM 发表于 2022-7-6 15:15:51

谢谢David,
我会在周一的第一件事就是试试。
 
我可以问一下,这个“uu”的意义是什么吗在命令前面和输入前面?没有它似乎也很好,对吗?(在我写的小程序中)
我知道“-”可以对命令行产生不同(即PURGE和-PURGE),但这对我来说是新的。

David Bethel 发表于 2022-7-6 15:22:40

来自VLisp帮助A2K
 
大卫

Lee Mac 发表于 2022-7-6 15:28:43

 
不久前我也有同样的问题——请看这里:
 
http://www.cadtutor.net/forum/showthread.php?t=26776

DVDM 发表于 2022-7-6 15:35:08

好的,星期一,回去工作。
 
我试了一下,但似乎什么也没做。然后,我将“_.UCS”“\u V”位更改为“_.PLAN”“\u C”,它在我制作的测试视口上工作。
 
(defun C:TEST (/ vc vs ve)
(setq vc (getvar "VIEWCTR")
   vs (getvar "VIEWSIZE")
   ve (trans '(0 0 1) 0 1))
(command "_.UCS" "_Y" 180
      "_.PLAN" "_C"
      "_.ZOOM" "_C" (trans vc ve 1) vs)
)
 
然后,我打开了一个实际的文件,这个例程将在其中使用,并发现它并没有像希望的那样工作。
问题似乎是,它仅适用于“平面”设置为“世界”且UCS设置为“平面”的视口。
 
不幸的是,我们详细介绍的大多数零件都是在模型空间中布置的,它们在这个世界上的实际位置。
在随附的文件中有两个部分(75x10mm等角)。请注意它们在模型空间中的尺寸标注方式,以及在布局的视口中的显示方式。如果在这些视口上运行例程,结果会完全不同(视图X和视图Y坐标交换),尽管比例正确。
如果我在“加强筋R5”视口中运行例程8次,我会再次回到原始位置(但在“加强筋L5”视口中没有这样的运气,因为UCS已经绕Z旋转了180度)。
这一定与例行程序中发生的矩阵修改有关,但我不确定这是如何工作的。
从技术上讲,您只需要将视图X坐标从+更改为-(或反之亦然),正如在左中视口中正确发生的那样(尺寸为“853@0deg”)。
 
读到“uu”这个词很有趣方法我想将其纳入所有例程是一种很好的做法,尽管在这里内部不会有什么不同(对于大多数人来说,即使修改pgp文件也太复杂)。
测试。图纸

Lee Mac 发表于 2022-7-6 15:37:44

大卫,
 
在您的代码中,第一个Trans不会返回一个3D点吗?如果是这样,如何在第二个Trans中将其用作参数之一?
 
3

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

很抱歉我的无知问题-请阅读ACAD帮助:
 
我是个白痴

DVDM 发表于 2022-7-6 15:48:02

李·麦克,
你从哪里得到的帮助信息?我到处都找不到。

DVDM 发表于 2022-7-6 15:55:12

找到它后,才发现了一个完全独立的LISP帮助库。
页: [1] 2
查看完整版本: Lisp和视口定位