明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3200|回复: 11

[求助]按颜色移动的lsp

  [复制链接]
发表于 2007-7-16 19:40:00 | 显示全部楼层 |阅读模式
cad2004中如何做一个lsp文件用一个命令来按所选颜色来移动对象呀
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-7-16 20:33:00 | 显示全部楼层
本帖最后由 作者 于 2007-7-16 20:40:02 编辑
  1. (setvar "cmdecho" 1)
  2. (defun C:TT (/ SS COL PT1)
  3.     (if (and (setq SS (entsel))
  4.       (setq COL (assoc 62 (entget (car SS))))
  5.       (setq SS (ssget "X" (list COL)))
  6.       (setq PT1 (getpoint "\n基点: ")
  7.       )
  8. )
  9. (command "_.MOVE" SS "" "non" PT1 PAUSE)
  10.     )
  11.     (princ)
  12. )
由于对象组码中对颜色的表达是不完善的,所以对颜色随层的对象无法支持。(需要特殊判断)
发表于 2007-7-16 21:11:00 | 显示全部楼层

按照颜色、图层、对象类型等移动对象,参见:

http://www.acad.net.cn/viewthread.php?tid=200&page=1&extra=page%3D1

只要你有足够创意,就能玩出足够精彩。这就是lisp

 楼主| 发表于 2007-7-18 18:01:00 | 显示全部楼层

谢谢楼上的,不知道你有调试过没有呀,出错了呀,即使在颜色不随层的情况下也不能正常运行呀,请再改改

发表于 2007-7-18 20:14:00 | 显示全部楼层
唉,帖一个。
如果是随块,则是按7号色选择对象。
  1. (defun c:x1 (/ *laysel* cor en lay-lst lay-str obj pt ss)
  2.   (setq *laysel* (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
  3.   (if (and (setq en (car (entsel "\n选择目标对象:")))
  4.     (setq obj (vlax-ename->vla-object en))
  5.     (setq cor (vla-get-color obj))
  6.     (setq pt (getpoint "\n基点:"))
  7.       )
  8.     (progn
  9.       ;; 分辨颜色
  10.       (cond ((= cor 256) ;_ 随层
  11.       (setq cor (vla-get-color (vla-item *laysel* (vla-get-layer obj))))
  12.      )
  13.      ((= cor 0) ;_ 随块
  14.       (setq cor 7)
  15.      )
  16.       )
  17.       ;; 筛选图层
  18.       (vlax-for lay *laysel*
  19. (if (= (vla-get-color lay) cor)
  20.    (setq lay-lst (cons (vla-get-name lay) lay-lst))
  21. )
  22.       )
  23.       (if lay-lst
  24. (foreach lay lay-lst
  25.    (if lay-str
  26.      (setq lay-str (strcat lay-str "," lay))
  27.      (setq lay-str lay)
  28.    )
  29. )
  30.       )
  31.       ;; 形成选择集
  32.       (if lay-str
  33. (setq ss (ssget "x" (list '(-4 . "<OR") (cons 0 lay-str) (cons 62 cor) '(-4 . "OR>"))))
  34. (setq ss (ssget "x" (list (cons 62 cor))))
  35.       )
  36.       (vl-cmdf "move" ss "" pt)
  37.       (vl-cmdf pause)
  38.     )
  39.   )
  40. )
 楼主| 发表于 2007-7-20 20:24:00 | 显示全部楼层
谢谢,请问你第一个程序中的“non"是什么意思,干什么用的呀
发表于 2007-7-20 21:08:00 | 显示全部楼层

(command "_.MOVE" SS "" "non" PT1 PAUSE)

"non" = none ==> 解除捕捉

如此方能确认 PT1 就定位


发表于 2007-7-21 11:11:00 | 显示全部楼层
请问楼主:2、3楼代码,不能用是何种情况?

发表于 2007-7-21 13:08:00 | 显示全部楼层
 楼主| 发表于 2007-7-21 21:58:00 | 显示全部楼层

各位大侠,请不要怕麻烦,问题一直没有解决,很多方法我都试过了,我是新手,自已又不太懂这方面,所以老是提同一个问题,想借鉴大家的经验帮忙,提高自已,一起进步,谢谢

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-29 05:47 , Processed in 0.211589 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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