明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5323|回复: 15

[源码] 另类拷贝AnotherCopy

[复制链接]
发表于 2013-6-24 13:45:47 | 显示全部楼层 |阅读模式
本帖最后由 自贡黄明儒 于 2013-6-24 15:22 编辑

见wowan整得热闹,我也来凑一凑
自我感觉还是实用的

谁在砸我,轻点呢!!
http://bbs.mjtd.com/thread-101674-1-1.html
  1. ;;---------------------------------另类拷贝AnotherCopy
  2. ;; 末尾数字+1 自贡黄明儒
  3. ;;ayEntSSHighLight见http://bbs.mjtd.com/thread-101674-1-1.html
  4. (defun C:AC (/ P0 SS0)  
  5.   ;;2  对象na之后所有实体产生的选择集
  6.   (defun newsel        (na / ss e1)
  7.     (if        na
  8.       (setq na (entnext na))
  9.       (setq na (entnext))
  10.     )
  11.     (setq ss (ssadd))
  12.     (while na
  13.       (setq e1 (entget na))
  14.       (if (wcmatch (LI_item 0 e1) "VERTEX,SEQEND,ATTRIB")
  15.         nil
  16.         (setq ss (ssadd na ss))
  17.       )
  18.       (setq na (entnext na))
  19.     )
  20.     ss
  21.   )
  22.   ;;3  copy
  23.   (defun do-copy (ss0 p0 / A BOOL PT SS SS1 SS2)
  24.     (setq bool T)
  25.     (setq ss ss0
  26.           pt p0
  27.     )
  28.     (while bool
  29.       (setq a (entlast))
  30.       (princ "\n >>下一点或者输入距离:")
  31.       (command "_.copy" ss "" pt pause)
  32.       (setq ss1 (newsel a))
  33.       (ayEntSSHighLight ss)
  34.       (command "._Select" ss1 "")
  35.       ;(if (setq ss2 (ssget "_p" '((0 . "*TEXT,ATTDEF,INSERT"))))(SA_change ss2))这句让文字尾数+1
  36.       (if (equal pt (setq pt (getvar "lastpoint")) 0.001)
  37.         (progn (command "undo" "2") (setq bool nil))
  38.       )
  39.       (setq ss ss1)
  40.       ;;(princ (getvar 'errno))
  41.     )
  42.   )
  43.   ;;4  主程序
  44.   (command "undo" "be")
  45.   (if (and (setq ss0 (ssget))
  46.            (setq p0 (getpoint "\n >基点:"))
  47.       )
  48.     (do-copy ss0 p0)
  49.   )
  50.   (command "undo" "e")
  51.   (princ)
  52. )
  53. ;;---------------------------------另类拷贝AnotherCopy

评分

参与人数 1明经币 +1 收起 理由
669423907 + 1 非常感想黄大侠,我非常的喜欢这个程序!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2013-6-24 13:47:12 | 显示全部楼层
(Defun LI_item (N E) (CDR (Assoc N E)))
发表于 2013-6-24 13:48:06 | 显示全部楼层
欢迎提供更多源码,一起学习, 。。。。

感觉自己做的复制没有CAD自带的那样好,CAD自带的复制有一根引线,已经习惯了这个线,。
发表于 2013-6-24 13:55:00 | 显示全部楼层
都是很实用的程序啊,多谢楼主
发表于 2013-6-24 14:00:40 | 显示全部楼层
这句忘了去 ; 号,
我加了一个图层过滤
(if (setq ss2 (ssget "_p" '((8 . "图号2")(0 . "*TEXT,ATTDEF,INSERT"))))(SA_change ss2))这句让文字尾数+1
发表于 2013-6-24 15:11:40 | 显示全部楼层
; 错误: no function definition: SA_CHANGE

点评

想尾数+1,去看这里 http://bbs.mjtd.com/thread-101674-1-1.html  发表于 2013-6-24 15:23
 楼主| 发表于 2013-6-24 15:25:21 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2013-6-24 15:29 编辑
yoyoho 发表于 2013-6-24 15:11
; 错误: no function definition: SA_CHANGE

  1. ;;练习正则表达式,文字最后数字加1
  2. (defun C:w1 (/ ENT I REGEX S STR STR1 STR2)
  3.   (setq ent (car (entsel)))                                 ;选择文字
  4.   (setq regex (vlax-create-object "Vbscript.RegExp"))       ;引用正则表达式控件
  5.   ;;(vlax-put-property regex "IgnoreCase" 0)                  ; 不忽略大小写
  6.   ;;(vlax-put-property regex "Global" 0)                      ;只匹配第一处
  7.   ;;(vlax-put-property regex "RightToLeft")                   ;从右向左查找(语法不对)
  8.   (setq str (cdr (assoc 1 (entget ent))))                   ;文本内容
  9.   (vlax-put-property regex "Pattern" "[0-9]+$")             ;查找规则,提最后一位数字;"[0-9]+$"最后数字
  10.   (setq s (vlax-invoke-method regex "Execute" str))         ;将规则运用到STR字符,得到提取出的文字内容
  11.   (VLAX-FOR tmp s
  12.     (setq str1 (cons (vlax-get-property tmp "value") str1))
  13.   )                                                         ;将内容转换为LISP语言就可以直接观察了
  14.   (if str1
  15.     (progn (setq str2 (itoa (1+ (atoi (car str1)))))        ;提取的尾数+1
  16.            (setq i (- (strlen (car str1)) (strlen str2)))
  17.            (if (> i 0)
  18.              (repeat i (setq str2 (strcat "0" str2)))
  19.            )
  20.            ;;(setq s (vlax-invoke-method regex "Replace" str "")) ;字符串前缀
  21.            (setq str (vlax-invoke-method regex "Replace" str str2)) ;替换字符串
  22.     )
  23.     (setq str (strcat str "1"))
  24.   )
  25.   (vlax-put-property (vlax-ename->vla-object ent) 'TextString str) ;改变特性
  26.   (vlax-release-object regex)                               ;释放正则表达式
  27.   (princ)
  28. )
  29. ;;小数点后数字加1
  30. (defun C:w2 (/ ENT ENTLIST I QIANZ STR STR1 STR2 STRLEN1 STRLEN2)
  31.   (setq ent (car (entsel)))                                 ;选择文字
  32.   (setq entlist (entget ent))
  33.   (setq str (cdr (assoc 1 entlist)))                        ;文本内容
  34.   (setq strlen1 (strlen str))                               ;长度
  35.   (setq QianZ (vl-string-right-trim "0123456789" str))      ;去除右边数字
  36.   (setq strlen2 (strlen QianZ))                             ;前缀长度
  37.   (setq str1 (substr str (1+ strlen2) (- strlen1 strlen2))) ;小数点后数字
  38.   (if str1
  39.     (progn (setq str2 (itoa (1+ (atoi str1))))              ;提取的尾数+1
  40.            (setq i (- (strlen str1) (strlen str2)))
  41.            (if (> i 0)
  42.              (repeat i (setq str2 (strcat "0" str2)))
  43.            )
  44.     )
  45.     (setq str2 "1")
  46.   )
  47.   (setq str (strcat QianZ str2))
  48.   (entmod (subst (cons 1 str) (assoc 1 entlist) entlist))
  49.   (princ)
  50. )

发表于 2013-6-24 15:40:02 | 显示全部楼层
自贡黄明儒 发表于 2013-6-24 15:25

自贡黄明儒 谢谢!
发表于 2013-6-24 15:41:09 | 显示全部楼层
下载 收藏 谢谢 谢谢 顶起
发表于 2013-7-4 09:18:34 | 显示全部楼层
黄大侠,方不方便帮改成线选择,后按快捷键啊,我想和这个程序合并一下,实现双功能。谢谢你了:

;画圆+多重复制(ProgramFancier)2011.8.21
(defun c:c()
(setq ss (ssget"i"))
(if (= ss nil)(txy)

复制递增........


(defun txy( / pc k e r e1 r1)
(setvar"autosnap"63)  ;; 极轴开(正交55)
(setvar"osmode"6079)  ;; 极轴开对象追踪开对象捕捉开(全部16383)
(setq pc (getpoint "\n中心点:") k t)
(command ".CIRCLE" pc pause)
(while k (setq e (entlast))
(setq r (cdr (assoc 40 (entget e))))
(command ".CIRCLE" pc pause)
(setq e1 (entnext e))
(setq r1 (cdr (assoc 40 (entget e1))))
(if (equal r r1 0.0001) (setq k nil)))
(command "U" "l" "")
(princ))

点评

你是想沿园copy吗?我没明白。  发表于 2013-7-4 11:46
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 12:41 , Processed in 0.194889 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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