找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1177|回复: 17

[编程申请]:点与线的属性互相传递问题(cass)续

[复制链接]
发表于 2005-11-24 19:51:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
点与线的属性互相传递问题(cass)续

(load "xyp_lib.vlx")
;|加载通用函数(可在签名栏直接下载)
如果已经下载xyp_lib并放到搜索路径下可以不再下载!
利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
★1·在acad.lsp中增加(load"xyp_lib")
■2·在每个程序内增加(load"xyp_lib")
■3·在command下,输入(load"xyp_lib")
■4·在菜单.mnl中增加(load"xyp_lib")
■5·将xyp_lib.vlx文件直接拽到cad屏幕
★通用函数下载地址:
http://www.xdcad.net/forum/attachme...&postid=1606661
|;

;;;点与线的属性互相传递问题
(defun c:test ()
  (CMDLA0)
  (setq        ss (ssget "X" '((0 . "INSERT") (8 . "GCD")))
        i  -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (setq pt1 (xyp-get-Dxf 10 s1)
          dy  (caddr pt1)
          pt2 (list (- (car pt1) 1) (- (cadr pt1) 1) 0)
          pt3 (list (+ (car pt1) 1) (+ (cadr pt1) 1) 0)
    )
    (setq ss1 (ssget "c" pt2 pt3)
          j   -1
    )
    (command "select" ss1 "r" s1 "")
    (setq ss1 (ssget "P"))
    (if        (and (setq ss1 (ssget "P"))
             (= (sslength ss1) 2)
        )
      (progn
        (while (setq s2 (ssname ss1 (setq j (1+ j))))
          (setq        etype (xyp-get-Dxf 0 s2)
                la    (xyp-get-Dxf 8 s2)
          )
          (if (= etype "TEXT")
            (setq s-text s2)
            (progn
              (setq s-o        s2
                    la1        la
              )
            )
          )
        )
        (command "chprop" s1 s-text "" "la" la1 "")
        (command "move"
                 s-o
                 s-text
                 ""
                 (list 0 0 0)
                 (list 0 0 dy)
        )
      )
      (princ"此处存在物体重叠!")
    )
  )
  (CMDLA1)
)


对样例完全行得通,可实际应用时,却有点问题,能麻烦你再帮我一下吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-24 23:33:38 | 显示全部楼层
类似一条线上有三个“GCD”层的点,无法自动识别!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-26 11:11:51 | 显示全部楼层
最初由 xyp1964 发布
[B]类似一条线上有三个“GCD”层的点,无法自动识别! [/B]


大侠好!小弟原本是精通VB的,本想学习VBA对CAD 进行二次开发,学了两天后却发现VBA 功能不够强大,所以改学LISP,目的就是解决上面的问题,如果LISP也解决不了,我就不想学了,所以请大侠务必帮帮我,LISP到底能否上述问题.
  如果用VB ,我的编程思路是这样的
第一步,提取"GCD"层所有点的(X,Y,Z),TEXT注记组成数组1
第二步,提取"GCD"层外所有点的(X,Y,Z)图层,组成数组2
第三步,写一个嵌套循环
         for  1 to 数组2
               for 1 to 数组1
                       if   数组2(x,y)=数组1(x,y)  then
                            数组2"Z"=数组1"Z"
                            数组1"图层"=数组2"图层"
                            数组1TEXT"图层"=数组2"图层"
                       end if
               next 数组1
        next 数组2
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-26 11:26:47 | 显示全部楼层
最初由 huaheroys 发布
[B]

大侠好!小弟原本是精通VB的,本想学习VBA对CAD 进行二次开发,学了两天后却发现VBA 功能不够强大,所以改学L... [/B]

“精通”VB或LISP都能解决此问题。
关键是你的要求根本就不明确,制图也不规范(也许原程序如此)。

“类似一条线上有三个“GCD”层的点,无法自动识别!”用图解释。
看下面的情况,到底把线移到哪个高度:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-26 18:36:55 | 显示全部楼层
大侠你好!
上午武汉发了地震,吓得我赶紧逃了出去,现在才回,所以让你久等了.
大侠可能有所误解,我的意思不是把高传给线,而是把高传给线相对应的节点上,一条线上可能有很多个节点,每个节点的高可能都不一样.

如果不能实现,就不用传递高了,只须传递图层,大侠务必帮帮我!
滴水之恩,必将涌泉相报
就此拜谢(能否不调通用函数,实现上述功能)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-26 19:05:40 | 显示全部楼层
不过三级左右地震,不用害怕!
还是先给个“原图--结果”的实例,好对照编程。
原图内有不少group,不知如何处理?
不让用“通用函数”还真不太会了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-26 20:02:42 | 显示全部楼层
大侠就是大侠,果真是气定神闲,稳如泰山,不同凡响!
小生佩服之致!景仰之情,犹如。。。。。。哈 哈 哈 哈
刚才忙了半天,终于有所发现,原来CAD中的每条线中的每个节点只能有一个高,改了半天改不了!难怪大侠帮不了我,这样吧,只须传递图层,再次有劳大侠了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-11-26 20:26:34 | 显示全部楼层
最初由 xyp1964 发布
[B]不过三级左右地震,不用害怕!
还是先给个“原图--结果”的实例,好对照编程。
原图内有不少group,不知如何处理?
不让用“通用函数”还真不太会了! [/B]

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

使用道具 举报

 楼主| 发表于 2005-11-26 20:52:02 | 显示全部楼层
就此拜谢(能否不调通用函数,实现上述功能)
将函数与程序一起打包,就是程序文件略大点,呵呵

之所以提出此无理要求,主要是想学习大侠的编程思路,如果大侠能把原代码的附注说明加上就太好了,感激之情。。。。。。哈哈哈哈
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-26 21:10:07 | 显示全部楼层
最初由 huaheroys 发布
[B]就此拜谢(能否不调通用函数,实现上述功能)
将函数与程序一起打包,就是程序文件略大点,呵呵

之所以提出此无理要求,主要是想学习大侠的编程思路,如果大侠能把原代码的附注说明加上就太好了,感激之情。。。。... [/B]

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

使用道具 举报

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

使用道具 举报

发表于 2005-11-26 22:04:04 | 显示全部楼层
原程序“删除”三处:
  1. [FONT=courier new](load "xyp_lib.vlx")                        ;版本 V.20051126
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib")
  6. ■2·在每个程序内增加(load"xyp_lib")
  7. ■3·在command下,输入(load"xyp_lib")
  8. ■4·在菜单.mnl中增加(load"xyp_lib")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. ★通用函数下载地址:
  11. [url]http://www.xdcad.net/forum/attachme...&postid=1606661[/url]
  12. |;

  13. ;;;点与线的属性互相传递问题
  14. (defun c:test ()
  15.   (CMDLA0)
  16.   (setq        ss (ssget "X" '((0 . "INSERT") (8 . "GCD")))
  17.         i  -1
  18.   )
  19.   (while (setq s1 (ssname ss (setq i (1+ i))))
  20.     (setq pt1 (xyp-get-Dxf 10 s1)
  21.                                         ;dy  (caddr pt1)
  22.           pt2 (list (- (car pt1) 1) (- (cadr pt1) 1) 0)
  23.           pt3 (list (+ (car pt1) 1) (+ (cadr pt1) 1) 0)
  24.     )
  25.     (setq ss1 (ssget "c" pt2 pt3)
  26.           j   -1
  27.     )
  28.     (command "select" ss1 "r" s1 "")
  29.                                         ;(setq ss1 (ssget "P"))
  30.     (if        (and (setq ss1 (ssget "P"))
  31.              (= (sslength ss1) 2)
  32.         )
  33.       (progn
  34.         (while (setq s2 (ssname ss1 (setq j (1+ j))))
  35.           (setq        etype (xyp-get-Dxf 0 s2)
  36.                 la    (xyp-get-Dxf 8 s2)
  37.           )
  38.           (if (= etype "TEXT")
  39.             (setq s-text s2)
  40.             (progn
  41.               (setq s-o        s2
  42.                     la1        la
  43.               )
  44.             )
  45.           )
  46.         )
  47.         (command "chprop" s1 s-text "" "la" la1 "")
  48.         ;|
  49.         (command "move"
  50.                  s-o
  51.                  s-text
  52.                  ""
  53.                  (list 0 0 0)
  54.                  (list 0 0 dy)
  55.         )
  56.         |;
  57.       )
  58.       (princ "此处存在物体重叠或不全!")
  59.     )
  60.   )
  61.   (CMDLA1)
  62. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-11-26 22:31:53 | 显示全部楼层
对样例完全行得通,可实际应用时,还是有点问题,到底是啥原因呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-26 23:11:36 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib.vlx")                        ;版本 V.20051126
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib")
  6. ■2·在每个程序内增加(load"xyp_lib")
  7. ■3·在command下,输入(load"xyp_lib")
  8. ■4·在菜单.mnl中增加(load"xyp_lib")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. |;

  13. ;;;
  14. (defun c:test ()
  15.   (CMDLA0)
  16.   (setq        ss (ssget "X" '((0 . "INSERT") (2 . "GC200")))
  17.         i  -1
  18.   )
  19.   (while (setq s1 (ssname ss (setq i (1+ i))))
  20.     (setq pt1 (xyp-get-Dxf 10 s1)
  21.           pt2 (list (- (car pt1) 3) (- (cadr pt1) 3))
  22.           pt3 (list (+ (car pt1) 3) (+ (cadr pt1) 3))
  23.           pt4 (xyp-get-MinMaxPoint s1 0)
  24.           pt5 (xyp-get-MinMaxPoint s1 1)
  25.     )
  26.     (setq ss1 (ssget "c" pt4 pt5)
  27.           ss2 (ssget "c" pt2 pt3)
  28.           ss3 (ssget "P" '((0 . "TEXT")))
  29.     )
  30.     (command "select" ss1 "r" s1 "")
  31.     (if        (setq ss1 (ssget "P"))
  32.       (progn
  33.         (setq s2 (ssname ss1 0)
  34.               la (xyp-get-Dxf 8 s2)
  35.         )
  36.         (command "chprop" s1 ss3 "" "la" la "")
  37.       )
  38.     )
  39.   )
  40.   (CMDLA1)
  41. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 21:49 , Processed in 0.222076 second(s), 67 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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