乐筑天下

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

[编程交流] 矩形旋转

[复制链接]

56

主题

259

帖子

213

银币

后起之秀

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

铜币
270
发表于 2022-7-6 06:39:57 | 显示全部楼层 |阅读模式
您好,我想知道是否有可能将矩形的旋转值提取到变量中。然后将其设置为0,并在之后将其重新命名为原始值。
 
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:53:44 | 显示全部楼层
你好,弗兰克。
 
尝试提取坐标,然后可能需要检查每个段的角度是否等于0.0、90.0、180。或270.0,因此矩形
否则就不会是直的。
回复

使用道具 举报

56

主题

259

帖子

213

银币

后起之秀

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

铜币
270
发表于 2022-7-6 07:02:26 | 显示全部楼层
嘿Tharwat,
 
谢谢你的回答,不过我不确定是否会听你的。
 
假设我使用命令矩形并使用旋转给它一个角度。现在它一直保存着这个角度。所以,当我使用一个使用矩形命令的例程时,它会坚持这个角度。所以我知道我可以在我的例程中使用旋转将其恢复为0,但我宁愿保存该角度,然后将其设置为0。如果不可能的话,我总能找到另一种方法来完成我的任务。
 
无论如何,希望它能帮助更多人
 
干杯和啤酒!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 07:05:19 | 显示全部楼层
如果需要添加宽度和高度之类的内容,可以简单地将一点lisp放在一起,拾取现有对象的两个点,这与拾取一个现有对象相同。
 
  1. (defun rec ()
  2. (setq pt1 (getpoint "\npick cnr point"))
  3. (setq pt2 (getpoint "\npick next cnr point"))
  4. )
  5. (rec)
  6. (setq ang (angle pt1 pt2))
  7. (rec)
  8. (command "rectang" pt1 pt2)
  9. (command "ro" "L" "" pt1 ang)
  10. (princ)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:12:51 | 显示全部楼层
据我所知,我相信CadFrank希望确定rectang命令的当前旋转角度,以便在使用该命令后可以重置旋转;不幸的是,我不相信这个值是可访问的,因为它不是作为系统变量或环境变量出现的。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:21:41 | 显示全部楼层
也许这个。。。
 
  1. (defun c:Test (/ *error* rtd _P p1 p2 e pts a lst ang)
  2. ;;--- Tharwat 23. April. 2013 ---;;
  3. (defun *error* (x) (princ "\n *Cancel*"))
  4. (defun rtd (a) (/ (* a 180.0) pi))
  5. (defun _P (ent)
  6.    (mapcar 'cdr
  7.            (vl-remove-if-not
  8.              '(lambda (i) (eq (car i) 10))
  9.              (entget ent)
  10.            )
  11.    )
  12. )
  13. (if (and (setq p1 (getpoint "\n Specify first corner :"))
  14.           (setq p2 (getcorner "\n Specify next corner :" p1))
  15.      )
  16.    (progn
  17.      (command "_.rectang" "_none" p1 "_none" p2)
  18.      (setq e (entlast))
  19.      (setq pts (_P e))
  20.      (setq a (angle (car pts) (cadr pts)))
  21.      (command "_.rotate"
  22.               e
  23.               ""
  24.               (mapcar '(lambda (j k) (/ (+ j k) 2.))
  25.                       (car pts)
  26.                       (caddr pts)
  27.               )
  28.               pause
  29.      )
  30.      (setq lst (_P (entlast)))
  31.      (setq ang (- (angle (car lst) (cadr lst)) a))
  32.    )
  33. )
  34. (if ang
  35.    (princ
  36.      (strcat "\n The rotation angle is : " (rtos (rtd ang) 2 1))
  37.    )
  38. )
  39. (princ)
  40. )
  41. (vl-load-com)
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-6 07:32:12 | 显示全部楼层
如果您不需要本机命令中可用的其他选项,可以重新创建“矩形”命令。
  1. (defun c:myrectangle ( / p1 p2 p3 p4 d)
  2. (if
  3.    (and
  4.      (setq p1 (getpoint "\nFirst corner: "))
  5.      (setq p2 (getpoint p1 "\nOther corner: "))
  6.      )
  7.    (progn
  8.      (setq d  (mapcar '- p2 p1)
  9.            p3 (mapcar '+ p1 (list (car d) 0.0))
  10.            p4 (mapcar '+ p1 (list 0.0 (cadr d)))
  11.            )
  12.      (command "_PLINE" "_non" p1 "_non" p3 "_non" p2 "_non" p4 "_c")
  13.      )
  14.    )
  15. (princ)
  16. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 07:35:48 | 显示全部楼层
我发现一个简单的方法是,如果你设置snapang,你的矩形画成一个角度,这是一个变量,你可以检索并保存它,也许是userr1,然后是一个简单的宏,然后只做rectang。dwg中最多可以有5个角度。
 
  1. (defun c:ang1 ()
  2. (setvar 'angbase (getvar 'userr1))
  3. )
  4. ; also need
  5. (defun c:setang1 ()
  6. (setvar 'userr1 (Getreal "\n enter angle")) ; i would use pick object but for example here KISS
  7. )
回复

使用道具 举报

56

主题

259

帖子

213

银币

后起之秀

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

铜币
270
发表于 2022-7-6 07:41:23 | 显示全部楼层
好吧看来你们都有自己的想法
 
因此,首先,我发布我正在使用的代码,当旋转角度改变时,我得到一个我的块工作不好。
 
现在我知道我可以用
所以现在它永久地把它设置回0。这是我的问题。我不想将其永久设置为0,我想提取该值以在使用后将其重置为相同的值。
 
现在我还可以修改代码,使其不使用矩形。
 
这就是。。谢谢你的帮助
 
干杯和啤酒!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 15:24 , Processed in 0.864216 second(s), 70 queries .

© 2020-2025 乐筑天下

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