找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2795|回复: 14

[求助] 用xdapi怎么完成简单的复制,旋转,陈列,缩放.对齐等

[复制链接]

已领礼包: 182个

财富等级: 日进斗金

发表于 2013-8-26 20:28:46 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-8-27 02:35:45 | 显示全部楼层
搜索论坛,用合适的关键字,多看API写的程序,多看函数发布里面的代码,多看晓东工具箱插件发布里面的源代码。

缩放的教学帖子:http://www.xdcad.net/forum/forum.php?mod=viewthread&tid=668002

平移的教学帖子:http://www.xdcad.net/forum/forum.php?mod=viewthread&tid=667994

其他的试试自己写写,不清楚的地方再把写的代码贴论坛来。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-8-27 03:54:30 | 显示全部楼层
给你写了个阵列的代码,参考下,不清楚的,再跟帖。

http://bbs.xdcad.net/thread-670344-1-1.html

缩放的,看下以前EA的帖子,论坛有好多。

http://bbs.xdcad.net/thread-34997-1-1.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-27 05:24:16 | 显示全部楼层
翻了翻 API 函数,目前的函数组合用来缩放还不理想,用Transfrom一次后实体就已经缩放,后面再动态时对应的已经不是原实体,这个和Scale命令就不一样了,Copy Move Rotate 没有问题

点评

没明白啥意思,缩放后,实体还是原来实体啊,缩放没改变实体,如果你用非等比变换,一是不常用,即使用了,如果想和原来实体一样不变ID,可以用xdrx_object_swapid 转换下。  详情 回复 发表于 2013-8-27 08:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-8-27 08:08:56 | 显示全部楼层
Free-Lancer 发表于 2013-8-27 05:24
翻了翻 API 函数,目前的函数组合用来缩放还不理想,用Transfrom一次后实体就已经缩放,后面再动态时对应的 ...

没明白啥意思,缩放后,实体还是原来实体啊,缩放没改变实体,如果你用非等比变换,一是不常用,即使用了,如果想和原来实体一样不变ID,可以用xdrx_object_swapid 转换下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-8-27 08:42:56 来自手机 | 显示全部楼层
XDSoft 发表于 26 分钟前

没明白啥意思,缩放后,实体还是原来实体啊,缩放没改变实体,如果你用非等比变换,一是不常用,即使用了,如果想和原来实体一样不变ID,可以用xdrx_object_swapid 转换下。

大概是用动态缩放时,第一次缩了0.9x,再次缩放0.8x,这时实体已经是缩放了0.9x,第二次对原实体而言缩放系数是 0.8*0.9=0.72,依次类推,都是在前一次基础上缩放,还达不到scale命令的比例缩放效果来自: Android客户端

点评

把代码贴上来,供测试,应该没这问题, 自由拷贝里面的缩放很正常。  详情 回复 发表于 2013-8-27 10:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-27 10:40:26 | 显示全部楼层
st788796 发表于 2013-8-27 08:42
大概是用动态缩放时,第一次缩了0.9x,再次缩放0.8x,这时实体已经是缩放了0.9x,第二次对原实体而言缩放 ...

把代码贴上来,供测试,应该没这问题, 自由拷贝里面的缩放很正常。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-27 13:43:05 | 显示全部楼层
newer 发表于 2013-8-27 10:40
把代码贴上来,供测试,应该没这问题, 自由拷贝里面的缩放很正常。

  1. (defun c:tt (/ myerr olderr callback ss d p mat0 mat1)
  2.   (defun myerr ()
  3.     (setq *error* olderr
  4.    olderr  nil
  5.     )
  6.     (xdrx_pointmonitor)
  7.     (princ)
  8.   )
  9.   (defun callback (dynpt / d1 scl sl mat)
  10.     (setq d1  (distance (trans dynpt 1 0) p)
  11.    scl (/ d1 d)
  12.     )
  13.     (if mat1
  14.       (setq sl (xdrx_matrix_scalefactor mat1)
  15.      scl (* scl (/ 1. sl))
  16.       )
  17.       (setq mat1 (xdrx_matrix_setscale mat0 scl p))
  18.     )
  19.     ;(princ "\n")
  20.     ;(princ scl)
  21.     (xdrx_entity_transform ss (xdrx_matrix_setscale mat0 scl p))
  22.   )
  23.   (setq olderr *error*
  24. *error* myerr
  25.   )
  26.   (if (and (setq ss (ssget))
  27.     (setq p (getpoint "\nBasepoint: "))
  28.     (setq d (getdist "\nBase Length: "))
  29.       )
  30.     (progn
  31.       (setq mat0 (xdrx_matrix_identity 3)
  32.      p  (trans p 1 0)
  33.       )
  34.       (setq ret (xdrx_pointmonitor "callback" ss))
  35.       (setq p1 (getpoint p "\nNew Length: "))
  36.       (xdrx_pointmonitor)
  37.     )
  38.   )
  39.   (princ)
  40. )

点评

这个程序想做什么?  详情 回复 发表于 2013-8-27 14:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-27 14:14:30 | 显示全部楼层

这个程序想做什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-8-27 15:59:58 来自手机 | 显示全部楼层
newer 发表于 1 小时前

这个程序想做什么?

看样子是模拟比例缩放来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 182个

财富等级: 日进斗金

 楼主| 发表于 2013-8-27 17:17:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-27 17:42:41 | 显示全部楼层
本帖最后由 newer 于 2013-8-27 17:43 编辑
kcad2010 发表于 2013-8-27 17:17
XD的陈列比vla-arrayRectangular要不要快一点?我现在用vla-arrayRectangular陈列10000个图repeat 4次 要 ...

老大阵列的代码给你写了,你自己可以测试下,在你的环境下,然后贴上来,不同人的机器配置不一样,别人的数据你参考不了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-8-28 08:31:19 | 显示全部楼层
本帖最后由 st788796 于 2013-8-28 08:32 编辑

这样改改就 Ok 了,模拟Scale命令的 比例缩放
  1. (defun c:tt (/ myerr olderr callback ss d p mat0 mat1)
  2.   (defun myerr ()
  3.     (setq *error* olderr
  4.    olderr  nil
  5.     )
  6.     (xdrx_pointmonitor)
  7.     (princ)
  8.   )
  9.   (defun callback (dynpt / d1 scl sl)
  10.     (setq d1  (distance (trans dynpt 1 0) p)
  11.    scl (/ d1 d)
  12.     )
  13.     (if mat1
  14.       (setq sl  (xdrx_matrix_scalefactor mat1)
  15.      scl  (* scl (/ 1. sl))
  16.      mat1 (xdrx_matrix_setscale mat1 scl p)
  17.       )
  18.       (setq mat1 (xdrx_matrix_setscale mat0 scl p))
  19.     )
  20.     (xdrx_entity_transform ss (xdrx_matrix_setscale mat0 scl p))
  21.   )
  22.   (setq olderr *error*
  23. *error* myerr
  24.   )
  25.   (if (and (setq ss (ssget))
  26.     (setq p (getpoint "\n基点: "))
  27.     (setq d (getdist "\n基准长度: "))
  28.       )
  29.     (progn
  30.       (setq mat0 (xdrx_matrix_identity 3)
  31.      p  (trans p 1 0)
  32.       )
  33.       (setq ret (xdrx_pointmonitor "callback" ss))
  34.       (setq p1 (getpoint p "\n新长度: "))
  35.       (xdrx_pointmonitor)
  36.     )
  37.   )
  38.   (princ)
  39. )

点评

改在哪了,原来是什么原因?  详情 回复 发表于 2013-8-28 08:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-28 08:41:09 | 显示全部楼层
st788796 发表于 2013-8-28 08:31
这样改改就 Ok 了,模拟Scale命令的 比例缩放

改在哪了,原来是什么原因?

点评

Fy的程序没有更新上次保存的矩阵  详情 回复 发表于 2013-8-28 11:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-8-28 11:08:32 | 显示全部楼层
newer 发表于 2013-8-28 08:41
改在哪了,原来是什么原因?

Fy的程序没有更新上次保存的矩阵
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-19 20:41 , Processed in 0.303637 second(s), 64 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表