乐筑天下

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

[编程交流] Lisp和视口定位

[复制链接]

9

主题

43

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:14:52 | 显示全部楼层
我想我会这样做
 
这仍然需要一系列调整-大卫
回复

使用道具 举报

9

主题

43

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 15:15:51 | 显示全部楼层
谢谢David,
我会在周一的第一件事就是试试。
 
我可以问一下,这个“uu”的意义是什么吗在命令前面和输入前面?没有它似乎也很好,对吗?(在我写的小程序中)
我知道“-”可以对命令行产生不同(即PURGE和-PURGE),但这对我来说是新的。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:22:40 | 显示全部楼层
来自VLisp帮助A2K
 
大卫
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:28:43 | 显示全部楼层
 
不久前我也有同样的问题——请看这里:
 
http://www.cadtutor.net/forum/showthread.php?t=26776
回复

使用道具 举报

9

主题

43

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 15:35:08 | 显示全部楼层
好的,星期一,回去工作。
 
我试了一下,但似乎什么也没做。然后,我将“_.UCS”“\u V”位更改为“_.PLAN”“\u C”,它在我制作的测试视口上工作。
 
  1. (defun C:TEST (/ vc vs ve)
  2. (setq vc (getvar "VIEWCTR")
  3.      vs (getvar "VIEWSIZE")
  4.      ve (trans '(0 0 1) 0 1))
  5. (command "_.UCS" "_Y" 180
  6.         "_.PLAN" "_C"
  7.         "_.ZOOM" "_C" (trans vc ve 1) vs)
  8. )

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

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:37:44 | 显示全部楼层
大卫,
 
在您的代码中,第一个Trans不会返回一个3D点吗?如果是这样,如何在第二个Trans中将其用作参数之一?
 
  1. 3
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:42:23 | 显示全部楼层
很抱歉我的无知问题-请阅读ACAD帮助:
 
我是个白痴
回复

使用道具 举报

9

主题

43

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 15:48:02 | 显示全部楼层
李·麦克,
你从哪里得到的帮助信息?我到处都找不到。
回复

使用道具 举报

9

主题

43

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 15:55:12 | 显示全部楼层
找到它后,才发现了一个完全独立的LISP帮助库。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 21:34 , Processed in 0.330319 second(s), 72 queries .

© 2020-2025 乐筑天下

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