乐筑天下

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

[编程交流] 沿u轴移动对象

[复制链接]

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 22:31:50 | 显示全部楼层 |阅读模式
你好
 
我在线程移动对象以匹配另一个点的x(y,z)-坐标时已经遇到了这个问题。Alan在这方面帮了我很多忙,但不知怎么的,它不起作用(准确地说,它只起作用一次,并且只有当第一个值为0时才起作用)。
 
我要寻找的是执行以下示例的例程:
 
我在楼层平面图的正确x、y位置上有一个柱,但位于沿z轴的某个高度。现在我想把它扔到一个阳台上,我也记不清它的z高度。
 
我现在想做的是输入“tzp”(沿z轴平移到点),单击柱底部的任何点,单击阳台楼层上的任何点,柱将下降到正确的高度。
 
我现在要做的是
1) 要测量距离,请复制z值,输入“tz”(用于在z方向上平移),粘贴该值,然后输入或
2) 使用点过滤器。输入“t”作为“平移”,选择基点,单击“xy”,再次选择基点,单击“z”,选择目标点。
 
这两种方式都有点令人厌倦。。。有人想让我开心吗?当然,这将是伟大的,如果这沿所有轴工作,但我'适合'足够的副本和更改轴参数自己。。。
 
找到附件我现在的工作和thanx!
233152d25foooybo5bolf6.jpg
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 22:39:44 | 显示全部楼层
有点像黑客,但它确实起到了作用。我很确定这就是你想要的:
 
  1. (defun c:tzp( / a b c s)
  2. (princ "Select objects: ")
  3. (setq s (ssget)
  4.    a (getpoint "\nSelect item base point: ")
  5.    b (getpoint "\nSelect target point: ")
  6.    c (list (car a) (cadr a) (caddr b)))
  7. (vl-cmdf "move" s "" a c)
  8. )

 
顺便说一句,这是一个地狱般的画。很不错的!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 22:46:35 | 显示全部楼层
你好
该代码将使Z坐标向上向下。
这就是他在报纸上想要的吗。
 
塔瓦特
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 22:55:47 | 显示全部楼层
Thanx它worx!
 
但是,关于我吹嘘自己足够适合复制和更改坐标,我必须说,我恐怕不得不放弃。
 
看起来诡计就在车里的某个地方,cadr和caddr。。。汽车a和cadr a必须是第一点的x和y。。。ah-从a移到c,其中c是a,第三个值替换为b的第三个值。。。地狱对于Y轴,我必须写下:
 
  1. c (list (car a) (cadr b) (caddr a)))

正当代码惊人地短!
 
我知道也有可能使用mapcar命令在1个代码中获得所有3个轴(txp、typ、tzp)的命令。。。
 
无论如何,这里有一个“复制”版本dzp!
 
  1. (defun c:dzp( / a b c s)
  2. (princ "Select objects: ")
  3. (setq s (ssget)
  4.    a (getpoint "\nSelect item base point: ")
  5.    b (getpoint "\nSelect target point: ")
  6.    c (list (car a) (cadr a) (caddr b)))
  7. (vl-cmdf "copy" s "" a c)
  8. )

 
这并不是说我为我的编程感到自豪:wink:,但当在建筑中处理楼层时,这是非常实用的,您的楼层高度是32752米!
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 22:57:24 | 显示全部楼层
如果成功了,你就可以有点自豪感,不管它有多“漂亮”。
 
对于你来说,真正研究和调整代码是件好事。你也可以为自己付出了额外的努力而感到骄傲。
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 23:03:04 | 显示全部楼层
嗨,塔瓦,
 
抱歉,作为一个非母语人士,我不明白你的意思。。。什么报纸?并且没有任何轴的转动需要监控。。。
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 23:13:07 | 显示全部楼层
结果是——正如我所说,我知道使用mapcar可以更优雅地完成这项工作,但我不知道如何做到。
 
  1. (defun c:TXP ( / a b c s)
  2. (princ "Select objects: ")
  3. (setq s (ssget)
  4.    a (getpoint "\nSelect item base point: ")
  5.    b (getpoint "\nSelect target point: ")
  6.    c (list (car b) (cadr a) (caddr a)))
  7. (vl-cmdf "move" s "" a c)
  8. )
  9. (defun c:TYP ( / a b c s)
  10. (princ "Select objects: ")
  11. (setq s (ssget)
  12.    a (getpoint "\nSelect item base point: ")
  13.    b (getpoint "\nSelect target point: ")
  14.    c (list (car a) (cadr b) (caddr a)))
  15. (vl-cmdf "move" s "" a c)
  16. )
  17. (defun c:TZP ( / a b c s)
  18. (princ "Select objects: ")
  19. (setq s (ssget)
  20.    a (getpoint "\nSelect item base point: ")
  21.    b (getpoint "\nSelect target point: ")
  22.    c (list (car a) (cadr a) (caddr b)))
  23. (vl-cmdf "move" s "" a c)
  24. )

 
以下是“复制”版本:
 
  1. (defun c:DXP ( / a b c s)
  2. (princ "Select objects: ")
  3. (setq s (ssget)
  4.    a (getpoint "\nSelect item base point: ")
  5.    b (getpoint "\nSelect target point: ")
  6.    c (list (car b) (cadr a) (caddr a)))
  7. (vl-cmdf "copy" s "" a c)
  8. )
  9. (defun c:DYP ( / a b c s)
  10. (princ "Select objects: ")
  11. (setq s (ssget)
  12.    a (getpoint "\nSelect item base point: ")
  13.    b (getpoint "\nSelect target point: ")
  14.    c (list (car a) (cadr b) (caddr a)))
  15. (vl-cmdf "copy" s "" a c)
  16. )
  17. (defun c:DZP ( / a b c s)
  18. (princ "Select objects: ")
  19. (setq s (ssget)
  20.    a (getpoint "\nSelect item base point: ")
  21.    b (getpoint "\nSelect target point: ")
  22.    c (list (car a) (cadr a) (caddr b)))
  23. (vl-cmdf "copy" s "" a c)
  24. )

 
我希望这对其他人有用——对我来说绝对有用。非常高兴,为你的黑客加油!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-5 23:15:55 | 显示全部楼层
使用点过滤器怎么样?
 
如。
  1. (defun c:XYZ (/ axis ss pt)
  2. ;; Alan J. Thompson, 06.15.10
  3. (initget 0 "X Y Z")
  4. (if (and (setq axis (getkword "\nAxis filter [X/Y/Z]: "))
  5.           (not (initget 0 "Copy Move"))
  6.           (setq *XYZ:Mode*
  7.                  (cond ((getkword (strcat "\nSpecify mode [Copy/Move] <"
  8.                                           (cond (*XYZ:Mode*)
  9.                                                 ((setq *XYZ:Mode* "Copy"))
  10.                                           )
  11.                                           ">: "
  12.                                   )
  13.                         )
  14.                        )
  15.                        (*XYZ:Mode*)
  16.                  )
  17.           )
  18.           (setq ss (ssget "_:L"))
  19.           (setq pt (getpoint "\nSpecify base point: "))
  20.      )
  21.    (command (strcat "_." *XYZ:Mode*) ss "" "_non" pt (strcat "." axis) "_non" pt)
  22. )
  23. (princ)
  24. )
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 23:25:42 | 显示全部楼层
嗨,艾伦,
 
再来一次!Thanxalot,但就我个人而言,我宁愿命令不需要工作流选项。这就是我命名命令的原因(例如,移动命令总是以t开头)。此外,我发现仅替换坐标值的Freerefills版本非常优雅。
 
无论如何,我不想打扰你超过必要的-我将需要你的帮助很快!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-5 23:27:59 | 显示全部楼层
我只是用选项(X/Y/Z和复制/移动)展示了我的示例。我最喜欢它的地方是,当你选择第二个点时,它会显示物体。最重要的是,我想展示点过滤器。其他选项可以轻松删除,因为这只是一个有许多选项的示例。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:10 , Processed in 0.411801 second(s), 75 queries .

© 2020-2025 乐筑天下

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