找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: q3_2006

[求助] 第一次发帖,有关组合物!

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-18 17:41:45 | 显示全部楼层
本帖最后由 newer 于 2013-8-18 17:42 编辑
q3_2006 发表于 2013-8-18 17:07
看别人求助怎么没这么麻烦?为什么要考我

如果文字不等高,上面的程序效果是这样的

xdtb_txtchange1.gif


要下图这样的才应该符合要求。

QQ截图20130818173807.png


上面我写的程序要是看懂了,改很容易,我现在是底边对齐移动的,你看看应该什么边对齐,怎么正确移动?

修改别人的程序也是一种能力。

点评

晓东的版主有种奇怪的坚持,既然这样,我也融合我理解的最好的方法来处理这个问题,以下代码需要EPI及API支持! 如果大小不一的文字位置替换只能先选择上行,后选择下行  详情 回复 发表于 2013-8-21 14:54
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-8-20 08:12:43 | 显示全部楼层
本帖最后由 q3_2006 于 2013-8-20 08:24 编辑

同意32#的做法,这里最适合的方法就是镜像,另外,我是新手没有LISP基础,矩阵什么的我懂不了!只能按自己懂的方式解决问题,版主不认可我也没办法,希望其他高手能给予帮助,谢谢各位了!

我的方法(需要E派支持)

;镜像文本
(defun c:tt ( / p1 p2 s1 s2)
  (setq s1 (car (entsel "\n选择第1个文本: "))
        s2 (car (entsel "\n选择第2个文本: "))
        p1 (xyp-get-9pt s1 2)
        p2 (xyp-get-9pt s2 8)
  )
  (command "mirror" s1 s2 "" "_mtp" p1 p2 "@10<0" "y")
  (princ)
)
000.gif

点评

你不要去纠结什么矩阵,不用理会矩阵是什么原理,你就照猫画虎的学,交给你的就是普通的函数,如果有两点,(setq v (mapcar '- p2 p1)) 就是这两个点间的位移, 你把位移送给名字叫 xdrx_matrix_setTransLation 的函  详情 回复 发表于 2013-8-21 10:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-8-21 10:43:32 | 显示全部楼层
q3_2006 发表于 2013-8-20 08:12
同意32#的做法,这里最适合的方法就是镜像,另外,我是新手没有LISP基础,矩阵什么的我懂不了!只能按自己 ...

你不要去纠结什么矩阵,不用理会矩阵是什么原理,你就照猫画虎的学,交给你的就是普通的函数,如果有两点,(setq v (mapcar '- p2 p1)) 就是这两个点间的位移, 你把位移送给名字叫 xdrx_matrix_setTransLation 的函数,这个函数的用法是 (setq m (xdrx_matrix_setTransLation mat0 v)), 你把获得值送给一个名字叫 xdrx_entity_transform的函数,用法是 (xdrx_entity_transform ent m),那么这个实体ent就平移了。 上面说到矩阵的字样了吗? 举一反三,怎么平移一个实体你不就会了吗?

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-8-21 14:54:20 | 显示全部楼层
newer 发表于 2013-8-18 17:41
如果文字不等高,上面的程序效果是这样的

晓东的版主有种奇怪的坚持,既然这样,我也融合我理解的最好的方法来处理这个问题,以下代码需要EPI及API支持!
如果大小不一的文字位置替换只能先选择上行,后选择下行


  1. (defun c:tt ( / e1 e2 mat0 mat1 mat2 p1_2 p1_8 p2_2 p2_8)
  2.   (if (and
  3. (setq e1 (car (xdrx_entsel "\n第一个文字<退出>:" '((0 . "text")))))
  4. (setq e2 (car (xdrx_entsel "\n第二个文字<退出>:" '((0 . "text")))))
  5.       )
  6.     (progn
  7.       (setq p1_2 (xyp-get-9pt e1 2)
  8.          p1_8 (xyp-get-9pt e1 8)
  9.          p2_2 (xyp-get-9pt e2 2)
  10.          p2_8 (xyp-get-9pt e2 8)
  11.          mat0 (xdrx_matrix_identity 3) ; 单位矩阵
  12.          mat1 (xdrx_matrix_settranslation mat0 (mapcar
  13.           '-
  14.           p2_8
  15.           p1_8
  16.         )
  17.            )
  18.       mat2 (xdrx_matrix_settranslation mat0 (mapcar
  19.           '-
  20.           p1_2
  21.           p2_2
  22.         )
  23.            )         
  24.       )
  25.       (xdrx_entity_transform e1 mat1)  ; 矩阵平移
  26.       (xdrx_entity_transform e2 mat2)  ; 矩阵平移
  27.     )
  28.   )
  29.   (princ)
  30. )


000.gif

点评

恭喜楼主写了这么好看的程序啊,帮你搜了个链接,你看看。 http://www.xdcad.net/forum/forum.php?mod=viewthread&tid=669889  详情 回复 发表于 2013-8-21 14:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-8-21 14:59:44 | 显示全部楼层
q3_2006 发表于 2013-8-21 14:54
晓东的版主有种奇怪的坚持,既然这样,我也融合我理解的最好的方法来处理这个问题,以下代码需要EPI及API ...

恭喜楼主写了这么好看的程序啊,帮你搜了个链接,你看看。

http://www.xdcad.net/forum/forum ... read&tid=669889

点评

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-8-21 15:12:50 | 显示全部楼层
Lisphk 发表于 2013-8-21 14:59
恭喜楼主写了这么好看的程序啊,帮你搜了个链接,你看看。

http://www.xdcad.net/forum/forum.php?mod ...

谢谢,对API还不够了解,只是用EPAI方便,懒得另外找了!

点评

看完这篇帖子,感觉你很幸运啊,版主们用心良苦啊,加油,你。  详情 回复 发表于 2013-8-21 15:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-8-21 15:19:34 | 显示全部楼层
q3_2006 发表于 2013-8-21 15:12
谢谢,对API还不够了解,只是用EPAI方便,懒得另外找了!

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-8-21 15:59:27 | 显示全部楼层
版主必须承认EPAI的9点比API的9点用起来更方便,这就不用我再改代码了吧!

点评

你说的有道理,函数发布新增加了2个函数: http://bbs.xdcad.net/thread-670272-1-1.html http://bbs.xdcad.net/thread-670271-1-1.html  详情 回复 发表于 2013-8-21 18:30

评分

参与人数 1D豆 +5 收起 理由
Lispboy + 5 技术引导讨论和指点奖!

查看全部评分

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-8-21 18:30:54 | 显示全部楼层
q3_2006 发表于 2013-8-21 15:59
版主必须承认EPAI的9点比API的9点用起来更方便,这就不用我再改代码了吧!

你说的有道理,函数发布新增加了2个函数:

http://bbs.xdcad.net/thread-670272-1-1.html
http://bbs.xdcad.net/thread-670271-1-1.html

点评

反应真迅速,加这个两个函数就方便了。希望能继续为我解决问题,感激不尽!  详情 回复 发表于 2013-8-21 18:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-8-21 18:51:50 来自手机 | 显示全部楼层
中心点按列排序,成组的变换,不需要点选来自: Android客户端

点评

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-8-21 18:58:33 | 显示全部楼层
Lispboy 发表于 2013-8-21 18:30
你说的有道理,函数发布新增加了2个函数:

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

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-8-21 20:02:40 | 显示全部楼层
因为版主及时添加函数两枚,特改纯API版!

  1. (defun c:tt ( / e1 e2 mat0 mat1 mat2 p1_1 p1_5 p2_1 p2_5)
  2.   (if (and
  3. (setq e1 (car (xdrx_entsel "\n第一个文字<退出>:" '((0 . "text")))))
  4. (setq e2 (car (xdrx_entsel "\n第二个文字<退出>:" '((0 . "text")))))
  5.       )
  6.     (progn
  7.       (setq p1_1 (XD::Geom:Get9PT e1 1)
  8.          p1_5 (XD::Geom:Get9PT e1 5)
  9.          p2_1 (XD::Geom:Get9PT e2 1)
  10.          p2_5 (XD::Geom:Get9PT e2 5)
  11.          mat0 (xdrx_matrix_identity 3) ; 单位矩阵
  12.          mat1 (xdrx_matrix_settranslation mat0 (mapcar
  13.           '-
  14.           p2_5
  15.           p1_5
  16.         )
  17.            )
  18.       mat2 (xdrx_matrix_settranslation mat0 (mapcar
  19.           '-
  20.           p1_1
  21.           p2_1
  22.         )
  23.            )         
  24.       )
  25.       (xdrx_entity_transform e1 mat1)  ; 矩阵平移
  26.       (xdrx_entity_transform e2 mat2)  ; 矩阵平移
  27.     )
  28.   )
  29.   (princ)
  30. )
  31. ;附上API新增的函数
  32. (defun XD::Geom:9pt (e / box)
  33.    (setq box (XD::Entity:BOX e))
  34.    (XD::Geom:BOX->9PT box)
  35. )
  36. (defun XD::Geom:BOX->9PT (box / p0 p1 p2 p3 p4 p5 p6 p7 p8)
  37.   (setq p0 (nth 0 box)
  38.         p2 (nth 1 box)
  39.         p1 (xdrx_midp p0 p2)
  40.         p4 (nth 2 box)
  41.         p3 (xdrx_midp p2 p4)
  42.         p6 (nth 3 box)
  43.         p5 (xdrx_midp p4 p6)
  44.         p7 (xdrx_midp p0 p6)
  45.         p8 (xdrx_midp p0 p4)
  46.   )
  47.   (list p0 p1 p2 p3 p4 p5 p6 p7 p8)
  48. )
  49. (defun XD::Geom:Get9PT(e index / box)
  50.    (setq box (XD::Geom:9pt e))
  51.    (nth index box)
  52. )

点评

呵呵,平移学会了吧,咱们讲到哪了? 该缩放了吧。 要缩放,就得有基点和缩放比例,基点咱们求出了,线的中点,缩放比例也有,假如他们的变量分别是 pmid 和 scl 那么: (setq mat (xdrx_matrix_setScale mat  详情 回复 发表于 2013-8-21 20:59
这样用就浪费了,求出 9pt 后,需要的点直接 Nth  详情 回复 发表于 2013-8-21 20:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-21 20:44:59 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-8-21 20:49 编辑
q3_2006 发表于 2013-8-21 20:02
因为版主及时添加函数两枚,特改纯API版!

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-21 20:59:39 | 显示全部楼层
q3_2006 发表于 2013-8-21 20:02
因为版主及时添加函数两枚,特改纯API版!

呵呵,平移学会了吧,咱们讲到哪了? 该缩放了吧。

要缩放,就得有基点和缩放比例,基点咱们求出了,线的中点,缩放比例也有,假如他们的变量分别是 pmid 和 scl

那么:
(setq mat (xdrx_matrix_setScale mat0 scl pmid))
(xdrx_entity_transform ss mat)  ;  ss 是两个字和线的选择集。

你自己试试执行上面两行代码,看看结果。

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 15:20 , Processed in 0.404347 second(s), 69 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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