找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: yangist

[求助] 如何选择块内和Bylayer的各种非连续线型

[复制链接]
发表于 2013-7-4 12:39:47 | 显示全部楼层
yangist 发表于 2013-7-4 12:21
eachy 噢 那应该怎么写呢
我想把ss0 再按线型分成4个list 分别操作

直接遍历ss0选择集
  1. (xdrx_setsstodb ss 0)
  2. (while (setq e (xdrx_getnentdata 0))
  3.    (cond
  4.      ((= (xdrx_getentdxf 6) "CENTER")
  5.       (setq l1 (cons e l1))
  6.      )
  7.      ((= (xdrx_getentdxf 6) "DASHDOT")
  8.        (setq l2 (cons e l2))
  9.      )
  10.      ....
  11.      (t)
  12.     )
  13. )

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

使用道具 举报

 楼主| 发表于 2013-7-4 14:12:35 | 显示全部楼层
本帖最后由 yangist 于 2013-7-4 14:16 编辑

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

使用道具 举报

 楼主| 发表于 2013-7-4 14:15:16 | 显示全部楼层
eachy 发表于 2013-7-3 15:19
就是,贴上来可以得到更多的指点,进步更快

(defun auto_lay_lts ()
  (setq ss0 (ssget '((0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE"))))
  (setq ss1 (ssadd));;;建立选择集
  (setq ss2 (ssadd))
  (setq ss3 (ssadd))
  (setq ss4 (ssadd))
  (setq k 0 n (sslength ss0))
  (while (< k n)
         (cond ((eq xx "Center2,Centerx2")
                      (command "_.chprop" ss1 "" "la" "03Center" "c" "bylayer" "lt" "bylayer" ""))
                    ((eq xx "Dash2,Dashx2")
                     (command "_.chprop" ss2 "" "la" "04Dashed" "c" "bylayer" "lt" "bylayer" ""))
                   ((eq xx "Phantom2,Phantomx2")
                    (command "_.chprop" ss3 "" "la" "08Phantom" "c" "bylayer" "lt" "bylayer" ""))
                   ((eq xx "Divide2,Dividex2")
                    (command "_.chprop" ss4 "" "la" "09Divide" "c" "bylayer" "lt" "bylayer" ""))
           );;;end cond
    (setq k (1+ k))
   );;;end while
);;;end sub

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-4 14:37:19 | 显示全部楼层
怎么用了那么多SS, 用一个就足够了,程序是分支的,互相不冲突的。

点评

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

使用道具 举报

 楼主| 发表于 2013-7-4 15:02:49 | 显示全部楼层
newer 发表于 2013-7-4 14:37
怎么用了那么多SS, 用一个就足够了,程序是分支的,互相不冲突的。

能帮我看下上面的程序吗 朋友

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-4 15:28:20 | 显示全部楼层
yangist 发表于 2013-7-4 15:02
能帮我看下上面的程序吗 朋友
(eq xx "Center2,Centerx2")

你这个XX变量怎么程序里面没看到,是什么?

点评

改过了 新代码如下 还是有问题 (defun auto_lay_lts () (setq ss (ssget '((0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE")))) (setq Center_list(ssadd) Dashed_list(ssadd) Phantom_List(ss  详情 回复 发表于 2013-7-4 15:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-4 15:51:23 | 显示全部楼层
newer 发表于 2013-7-4 15:28
你这个XX变量怎么程序里面没看到,是什么?

改过了 新代码如下 还是有问题
(defun auto_lay_lts ()
(setq ss (ssget  '((0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE"))))
(setq Center_list(ssadd)
          Dashed_list(ssadd)
          Phantom_List(ssadd)
          Divide_List(ssadd))
  (setq k 0 n (SSLENGTH ss))
(while (< k n)
   (setq en (ssname ss k))
   (setq ass6 (cdr (assoc 6 (entget en))))
   (if(or (= ass6 "Center") (= ass6 "Center2") (= ass6 "Centerx2"))
      (progn
      (setq Center_list (ssadd en Center_list))
      ))
   (if(or (= ass6 "Dash") (= ass6 "Dashed") (= ass6 "Dashed2") (= ass6 "Dashedx2"))
      (progn
      (setq Dashed_list (ssadd en Dashed_list))
      ))
   (if(or (= ass6 "Phantom") (= ass6 "Phantom2") (= ass6 "Phantomx2"))
      (progn
      (setq Phantom_List (ssadd en Phantom_List))
      ))
   (if(or (= ass6 "Divide") (= ass6 "Divide2") (= ass6 "Dividex2"))
      (progn
      (setq Divide_List (ssadd en Divide_List))
      ))
   (setq k (1+ k))
);end while
    (command "change" Center_list       "" "la" "03Center"     "c" "bylayer" "lt" "bylayer" "")
    (command "change" Dashed_list      "" "la" "04Dashed"    "c" "bylayer" "lt" "bylayer" "")
    (command "change" Phantom_List  "" "la" "08Phantom" "c" "bylayer" "lt" "bylayer" "")
    (command "change" Divide_List       "" "la" "09Divide"      "c" "bylayer" "lt" "bylayer" "")
);;;end sub

点评

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-7-4 16:05:45 | 显示全部楼层
yangist 发表于 2013-7-4 15:51
改过了 新代码如下 还是有问题
(defun auto_lay_lts ()
(setq ss (ssget  '((0 . "ARC,CIRCLE,ELLIPSE, ...

给你个用 XDAPI 写的参考
  1. (defun auto_lay_lst (ss / e elty lyr)
  2.   (xdrx_setenttodb ss 0)
  3.   (while (setq e (xdrx_getentdata 0))
  4.     (setq elty (xdrx_getdxf 6))
  5.     (cond
  6.       ((wcmatch elty "CENTER*")
  7.        (setq lyr "03Center")
  8.       )
  9.       ((wcmatch elty "DASH*")
  10.        (setq lyr "04Dashed")
  11.       )
  12.       ((wcmatch elty "PHANTOM*")
  13.        (setq lyr "08Phantom")
  14.       )
  15.       ((wcmatch elty "DIVIDE*")
  16.        (setq lyr "09Divide")
  17.       )
  18.       (t (setq elty nil))
  19.     )
  20.     (if elty
  21.       (xdrx_entity_setproperty
  22. e "layer" lyr "color" "bylayer" "ltype" "bylayer")
  23.     )
  24.   )
  25. )

点评

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

使用道具 举报

 楼主| 发表于 2013-7-4 16:35:41 | 显示全部楼层
eachy 发表于 2013-7-4 16:05
给你个用 XDAPI 写的参考

(xdrx_setenttodb ss 0)
;;;看不懂哎 有源码吗

点评

这个是 XDAPI 函数,可以使Lisp编程更方便、更有效率,如果你非要用 aLisp,可以对照 api 手册看看函数功能,自己用 Lisp 翻译。 这个程序已经给你提供了思路  详情 回复 发表于 2013-7-4 17:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-4 17:09:35 | 显示全部楼层
yangist 发表于 2013-7-4 16:35
(xdrx_setenttodb ss 0)
;;;看不懂哎 有源码吗

这个是 XDAPI 函数,可以使Lisp编程更方便、更有效率,如果你非要用 aLisp,可以对照 api 手册看看函数功能,自己用 Lisp 翻译。
这个程序已经给你提供了思路
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 10:41 , Processed in 0.390492 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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