乐筑天下

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

[编程交流] align lisp问题

[复制链接]

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 10:33:16 | 显示全部楼层
http://www.cadtutor.net/forum/showthread.php?49158-使用坐标过滤器沿轴移动对象
 
正如我写的那样,我们以前有过这个话题。我喜欢Frerefill的版本,因为它简单,但也许我会试试Alan的版本。
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 10:35:36 | 显示全部楼层
嗨Mircea,
 
thanx,很抱歉,在我上次发帖之前,我没有看到你的回复。我会试试你的方法;OSNAP也是我的嫌疑犯。
 
拉尔夫
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 10:40:18 | 显示全部楼层
嗨Mircea,
 
基本上,你的代码是有效的。只是它在选择点之前停用了osnap,这不是很好。此外,它似乎不会重新激活osnap。看起来你的代码会询问osnap状态,然后会重新生成它,但我不完全明白怎么做。因此,我将其改为我更原始的方式,现在它似乎起作用了:
 
  1. (defun c:TZP ( / OldOsm a b c s)
  2. (princ "Select objects: ")
  3. (if (and (setq s (ssget))
  4.          (setq a (getpoint "\nSelect item base point: "))
  5.          (setq b (getpoint "\nSelect target point: ")))
  6. (progn
  7.   (setq c (list (car a) (cadr a) (caddr b)))
  8.   (COMMAND "_OSNAP" "")
  9.   (vl-cmdf "_move" s "" a c)
  10. )
  11. )
  12. (COMMAND "_OSNAP" "_END,_INT,_MID,_CEN,_INS,_PER")
  13. (princ)
  14. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 10:43:34 | 显示全部楼层
似乎您错过了复制我的示例中的一些行-我将它们与每个操作的注释一起添加到您的代码中。OSNAP模式存储在OSMODE系统变量中:1、当前设置存储在局部变量中;第二,禁用该模式以不干扰命令调用;第三,恢复先前存储的状态。
请记住,在完成例程后恢复用户环境是一种非常好的编程实践。
 
  1. (defun c:TZP ( / OldOsm a b c s)
  2. [color=blue] (setq OldOsm (getvar "OSMODE"))   ;retain current state of OSNAP mode[/color]
  3. (princ "Select objects: ")
  4. (if (and (setq s (ssget))
  5.          (setq a (getpoint "\nSelect item base point: "))
  6.          (setq b (getpoint "\nSelect target point: ")))
  7. (progn
  8.   (setq c (list (car a) (cadr a) (caddr b)))
  9.   [color=blue];[/color](COMMAND "_OSNAP" "")
  10.   [color=blue](setvar "OSMODE" 0)             ;disable OSNAP mode
  11. [/color]   (vl-cmdf "_move" s "" a c)
  12. )
  13. )
  14. [color=blue] (setvar "OSMODE" OldOsm)          ;restore previous state of OSNAP mode[/color]
  15. [color=blue];[/color](COMMAND "_OSNAP" "_END,_INT,_MID,_CEN,_INS,_PER")
  16. (princ)
  17. )

 
 
当做
米尔恰
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 10:49:00 | 显示全部楼层
@Randolph,你是对的,之前的代码中有一个错误-我现在修复了它。很抱歉给您带来不便。非常感谢。
 
当做
米尔恰
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 10:52:45 | 显示全部楼层
不要道歉,你帮了我很多!我同意恢复以前地位的方法更优雅。但另一方面,我有很多命令(命令“\u OSNAP”“\u END,\u INT,\u MID,\u CEN,\u PER,\u INS”)。这是因为我不是程序员,复制了我的acad。lsp来自多个地方。
 
顺便问一下:你介意在我的另一个帖子上唠叨一下吗
绕x、y、z轴旋转
 
 
总之,这似乎是一个问题。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 10:55:29 | 显示全部楼层
如果决定切换到使用系统变量而不是命令调用,则可以通过汇总每个所需模式的值来设置当前模式:
 
  1. None                     0
  2. Endpoint                 1
  3. Midpoint                 2
  4. Center                   4
  5. Node                     8
  6. Quadrant                16
  7. Intersection            32
  8. Insertion               64
  9. Perpendicular          128
  10. Tangent                256
  11. Nearest                512
  12. Apparent Intersection 2048
  13. Extension             4096
  14. Parallel              8192

 
例如:端点+中点+象限:OSMODE=1+2+16=19
 
当做
米尔恰
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:10 , Processed in 0.618583 second(s), 64 queries .

© 2020-2025 乐筑天下

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