明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3222|回复: 15

[基础] 形式

  [复制链接]
发表于 2011-7-15 09:39:24 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-7-15 10:02:06 | 显示全部楼层

  1. (defun c:ab ()
  2.   (setvar "osmode" 0)

  3.   (while (setq nn (car (entsel "\n请选檡原图框")))
  4.     (setq nn1 (entnext nn))
  5.     (setq ww (entget nn1))
  6.      .... snip  (略)
  7.       (setq ww1 (entget mm))
  8.       (setq a1 (cdr (assoc 0 ww1)))
  9.     )
  10.   )
  11.   (setvar "osmode" 37)
  12.   (princ)
  13. ) ;_ end defun
未测...

评分

参与人数 1金钱 +25 收起 理由
1078815748 + 25

查看全部评分

 楼主| 发表于 2011-7-15 10:13:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-7-15 10:24:18 | 显示全部楼层
没看出来这个程序是做什么用的
 楼主| 发表于 2011-7-15 10:31:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-7-15 10:34:26 | 显示全部楼层
回复 1078815748 的帖子

方便上传 调试用图纸+成果 (*.Dwg) 吗?
发表于 2011-7-15 10:48:36 | 显示全部楼层
可以把原程序语句
(setq mm1 (car (entsel"\n請選檡目標圖框")))
  (setq mm(entnext mm1))
  (setq ww1 (entget mm))
  (setq a1 (cdr(assoc 0 ww1)))


改为下面这种形式
(princ "\n可选多个<替换对象>: ")
(setq ss (ssget))  (setq i 0)
(repeat (sslength ss)
    (setq ssn (ssname ss i))
    (setq ssdata (entget ssn))
    (setq a1 (cdr (assoc 0 ssdata)))
    (setq i (1+ i))
)

评分

参与人数 1金钱 +25 收起 理由
1078815748 + 25

查看全部评分

 楼主| 发表于 2011-7-15 10:55:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-7-15 10:56:24 | 显示全部楼层
完整程序即

;複製圖框內容(AB)
(defun c:ab()
  (setvar "osmode" 0)
  (setq nn (car (entsel"\n請選檡原圖框")))
  (setq nn1  (entnext nn))
  (setq ww (entget nn1))
  (setq b1 (cdr(assoc 0 ww)))
  (setq c (cdr (assoc 2 ww)))
  (setq d (cdr(assoc 1 ww)))
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(princ "\n可选多个目標圖框")
(setq ss (ssget))  (setq i 0)
(repeat (sslength ss)
    (setq ssn (ssname ss i))
    (setq ssdata (entget ssn))
    (setq a1 (cdr (assoc 0 ssdata)))
    (setq i (1+ i))
)
  (while (= b1 "ATTRIB")
     (setq flag1 1)
     (while (and (= flag1 1)(= a1 "ATTRIB"))
         (setq c1 (cdr (assoc 2 ww1)))
         (if (= c c1)
     (progn
       (setq e(assoc 1 ww1))
       (setq d1(cons 1 d))
       (setq ww2(subst d1 e ww1))
       (entmod ww2)
       (entupd mm)
       (setq flag1 0)
             ))
          (if (= flag1 1)
    (progn  
          (setq mm(entnext mm))
          (setq ww1(entget mm))
          (setq a1(cdr(assoc 0 ww1)))
    ))
     )
          (setq nn1 (entnext nn1))
          (setq ww  (entget nn1))
          (setq b1  (cdr (assoc 0 ww)))
          (setq c (cdr (assoc 2 ww)))
          (setq d (cdr (assoc 1 ww)))
          (setq mm mm1)
          (setq mm(entnext mm))
          (setq ww1(entget mm))
          (setq a1(cdr(assoc 0 ww1)))         
  )
(setvar "osmode" 37)
  (princ)
);end defun

评分

参与人数 1金钱 +25 收起 理由
1078815748 + 25

查看全部评分

发表于 2011-7-15 10:57:17 | 显示全部楼层
本帖最后由 ljpnb 于 2011-7-15 12:11 编辑

未测试

  1. ;;;複製圖框內容(AB)
  2. (defun c:ab ()
  3.   (setvar "osmode" 0)
  4.   (if (setq nn (car (entsel "\n請選檡原圖框")))
  5.     (progn
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7.       (princ "\n可选多个目標圖框: ")
  8.       (if (setq ss (ssget)
  9.   i  0
  10.    )
  11. (repeat (sslength ss)
  12.    (setq nn1 (entnext nn))
  13.    (setq ww (entget nn1))
  14.    (setq b1 (cdr (assoc 0 ww)))
  15.    (setq c (cdr (assoc 2 ww)))
  16.    (setq d (cdr (assoc 1 ww)))
  17.    (setq mm1 (ssname ss i))
  18.    (setq mm (entnext mm1))
  19.    (setq ww1 (entget mm))
  20.    (setq a1 (cdr (assoc 0 ww1)))
  21.    (while (= b1 "ATTRIB")
  22.      (setq flag1 1)
  23.      (while (and (= flag1 1) (= a1 "ATTRIB"))
  24.        (setq c1 (cdr (assoc 2 ww1)))
  25.        (if (= c c1)
  26.   (progn
  27.     (setq e (assoc 1 ww1))
  28.     (setq d1 (cons 1 d))
  29.     (setq ww2 (subst d1 e ww1))
  30.     (entmod ww2)
  31.     (entupd mm)
  32.     (setq flag1 0)
  33.   )
  34.        )
  35.        (if (= flag1 1)
  36.   (progn
  37.     (setq mm (entnext mm))
  38.     (setq ww1 (entget mm))
  39.     (setq a1 (cdr (assoc 0 ww1)))
  40.   )
  41.        )
  42.      )
  43.      (setq nn1 (entnext nn1))
  44.      (setq ww (entget nn1))
  45.      (setq b1 (cdr (assoc 0 ww)))
  46.      (setq c (cdr (assoc 2 ww)))
  47.      (setq d (cdr (assoc 1 ww)))
  48.      (setq mm mm1)
  49.      (setq mm (entnext mm))
  50.      (setq ww1 (entget mm))
  51.      (setq a1 (cdr (assoc 0 ww1)))
  52.    )
  53.    (setq i (1+ i))
  54. )
  55.       )
  56.     )
  57.   )
  58.   (setvar "osmode" 37)
  59.   (princ)
  60. )     ;end defun

评分

参与人数 1金钱 +25 收起 理由
1078815748 + 25

查看全部评分

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

本版积分规则

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

GMT+8, 2025-7-26 07:49 , Processed in 0.186738 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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