乐筑天下

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

[编程交流] Lisp始终在z处绘制pline

[复制链接]

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:42:00 | 显示全部楼层 |阅读模式
我之前不小心把这个贴错了论坛。我有一个快速的问题,关于我在lisp例程中做了什么错误。我正在尝试更正lisp例程,该例程将我绘制的多段线的高程设置为高程0,无论捕捉到的点是什么。我不熟悉lisp例程,所以我仍在学习很多,我很难看到我做错了什么。我的lisp例程是:
 
  1. (defun c:plinezero ()
  2. (setvar "Osnapz" 1)
  3. (command "pline")
  4. (command "osnap" "0")
  5. (princ)
  6. )
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-5 18:46:19 | 显示全部楼层
一种方法是这样。
 
  1. (defun c:plinezero ()
  2. (setvar "elevation" 0.0)
  3. (setvar "osnapz" 1)
  4. (command "._PLINE")
  5. (while (= (logand (getvar "CMDACTIVE") 1) 1)
  6.    (command PAUSE)
  7. )
  8. (princ)
  9. )

 
注意,osnapz=1意味着它将使用当前高程,而不一定是0.0
您可能希望保存这两个系统变量的当前值,然后再恢复它们。
这里没有显示。
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:50:18 | 显示全部楼层
非常感谢你的帮助!所以我使用了你发送的代码,这很有效。我的问题是,该命令没有与实际pline命令相同的提示。我之所以要添加提示,是为了让不熟悉CAD的人能够理解pline的一切。我在末尾添加了一行,我认为这会将osnapz设置回0,但它似乎不是出于某种原因这样做的。
代码:
(defun c:plinezero()
(setvar“elevation”0.0)
(setvar“osnapz”1)
(命令“_PLINE”)
(while(=(logand(getvar“CMDACTIVE”)1)1)
(命令暂停)
)
(setvar“osnapz”0)
(普林斯)
)
回复

使用道具 举报

12

主题

152

帖子

140

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 18:54:38 | 显示全部楼层
另一个选项是简单地设置选项>>绘图>>用当前高程替换Z值
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:57:54 | 显示全部楼层
iconeo,有没有一种命令行方式可以做到这一点(即,我可以不用键入命令行选项,然后选择“绘图”选项卡,然后选择“替换z”)吗
回复

使用道具 举报

12

主题

152

帖子

140

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 18:59:47 | 显示全部楼层
 
是的。
 
  1. (command "setvar" "osnapz" "1")

 
我们把它放在我们的阿卡多克。lsp,因此它适用于所有用户。我们很少在3D环境下工作,所以如果用户确实需要它,就必须将其关闭。
 
我们也把这个放进去,以防有人对他们的UCS发疯。
 
  1. (if (/= (getvar "WorldUCS") 1)
  2. (alert "Warning. Your UCS is not set to world.")       
  3. )
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 19:02:37 | 显示全部楼层
Iconeo,谢谢你的帮助。这就是我试图合并到原始命令中的内容,但我无法使用lisp例程将osnapz设置回0。这很重要,因为我们在3D中广泛工作。
回复

使用道具 举报

12

主题

152

帖子

140

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 19:07:15 | 显示全部楼层
 
如果是这样的话,我会设置一个按钮用作切换。像这样:
 
  1. ^C^C osnapz $M=$(-,1,$(getvar,osnapz))

 

 
  1. (if (zerop (getvar "osnapz"))(setvar "osnapz" 1)(setvar "osnapz" 0))

 
然后,当你需要在模式之间切换时,只需点击一下即可。
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-5 19:08:32 | 显示全部楼层
 
我喜欢UCS大喊Iconeo,对于那些在这些事情上没有经验的人来说,非常有帮助。
关于一致性,有很多话要说。
 
当图形单位不是公制时,我使用modemacro发出警报,因为这是我们的stanard MO。
回复

使用道具 举报

12

主题

152

帖子

140

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 19:11:52 | 显示全部楼层
哈哈,我用同样的当不在帝国。。。然后我们在墨西哥找到了很多工作。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:24 , Processed in 0.450489 second(s), 72 queries .

© 2020-2025 乐筑天下

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