论坛首页 | 新人报到 |发帖必看—论坛版规 | 错误报告 | 注册用户
Baidu
发新话题
打印

[分享] 数字递增拷贝LISP程序

[分享] 数字递增拷贝LISP程序

;;;--数字递增拷贝----------------------------------------------------

(defun c:copynum (/  num-en-name  num-en-date

  entypenum  num-date  base-pt  pt1

  pt2  delt-xdelt-y  delt-z  x

  y  z  num-pt  int-type

   )

;(SetErr)

(if (= delt-num nil)

(setq delt-num 1)

) ;_end if

(princ "\n请输入增量值 [1] lt; ")

(princ delt-num)

(princ " gt;:")

(if (not (setq #delt-num (getint)))

(setq delt-num delt-num)

(setq delt-num #delt-num)

)

(if (not

  (setq num-en-name (car (entsel "\n请选择一个数字lt;退出gt;:")))

)

(exit)

)

(redraw num-en-name 3)

(setq num-en-date (entget num-en-name))

(setq entype (cdr (assoc 0 num-en-date)))

(setq int-type (type 1))

(if (or (= entype "TEXT")

  (= entype "MTEXT")

  ;;(= entype "ATTDEF")

)

(progn

(if (eq (type (setq num (read (cdr (assoc 1 num-en-date)))))

  int-type

  )

  (progn

  (setq pt1 (getpoint "\n请指定基准点:"))

  (cond

  ((and (= entype "TEXT")

  (or (= (cdr (assoc 72 num-en-date)) 1)

    (= (cdr (assoc 73 num-en-date)) 2)

    (= (cdr (assoc 72 num-en-date)) 4)

    (and

    (= (cdr (assoc 72 num-en-date)) 0)

    (/= (cdr (assoc 73 num-en-date)) 0)

    )

  )

)

(setq base-pt (cdr (assoc 11 num-en-date)))

(setq x (car base-pt)

   y (cadr base-pt)

   z (caddr base-pt)

)

(while (setq pt2 (getpoint pt1 "\n请指定第二点:"))

(setq delt-x (- (car pt2) (car pt1))

   delt-y (- (cadr pt2) (cadr pt1))

   delt-z (- (caddr pt2) (caddr pt1))

)

(setq num-pt (list 11 (delt-x x) (delt-y y) (delt-z z))

   num(delt-num num)

   num-date (cons 1 (itoa num))

)

(setq num-en-date

    (subst num-date (assoc 1 num-en-date) num-en-date)

)

(setq num-en-date

    (subst num-pt (assoc 11 num-en-date) num-en-date)

)

(entmake num-en-date)

)

  )

  ((and (= entype "TEXT")

  (or (= (cdr (assoc 72 num-en-date)) 3)

    (= (cdr (assoc 72 num-en-date)) 5)

  )

)

(setq base-pt (cdr (assoc 11 num-en-date))

   x (car base-pt)

   y (cadr base-pt)

   z (caddr base-pt)

)

(setq base-pt2 (cdr (assoc 10 num-en-date))

   x2  (car base-pt2)

   y2  (cadr base-pt2)

   z2  (caddr base-pt2)

)

(while (setq pt2 (getpoint pt1 "\n请指定第二点:"))

(setq delt-x (- (car pt2) (car pt1))

   delt-y (- (cadr pt2) (cadr pt1))

   delt-z (- (caddr pt2) (caddr pt1))

)

(setq num-pt (list 11 (delt-x x) (delt-y y) (delt-z z))

   num-pt2(list 10 (delt-x x2) (delt-y y2) (delt-z z2))

   num(delt-num num)

   num-date (cons 1 (itoa num))

)

(setq num-en-date

    (subst num-date (assoc 1 num-en-date) num-en-date)

)

(setq num-en-date

    (subst num-pt (assoc 11 num-en-date) num-en-date)

)

(setq num-en-date

    (subst num-pt2 (assoc 10 num-en-date) num-en-date)

)

(entmake num-en-date)

)

  )

  (t

(setq base-pt (cdr (assoc 10 num-en-date)))

(setq x (car base-pt)

   y (cadr base-pt)

   z (caddr base-pt)

)

(while (setq pt2 (getpoint pt1 "\n请指定第二点:"))

(setq delt-x (- (car pt2) (car pt1))

   delt-y (- (cadr pt2) (cadr pt1))

   delt-z (- (caddr pt2) (caddr pt1))

)

(setq num-pt (list 10 (delt-x x) (delt-y y) (delt-z z))

   num(delt-num num)

   num-date (cons 1 (itoa num))

)

(setq num-en-date

    (subst num-date (assoc 1 num-en-date) num-en-date)

)

(setq num-en-date

    (subst num-pt (assoc 10 num-en-date) num-en-date)

)

(entmake num-en-date)

)

  )

  ) ;_end cond

  )

  (alert "**不是数字**")

)

)

(alert " **请选择数字**")

)

(redraw num-en-name 4)

;(ReErr)

(princ)

)

TOP

发新话题
郑重声明: 本论坛属技术交流,非赢利性论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,会员在论坛发表的言论仅代表个人观点,不代表论坛立场!
本站部分内容及所有资料来自网络,版权归原作者所有,本站仅仅提供一个观摩学习的环境,将不对任何资源负法律责任!请在下载后24小时内删除!
会员出于学习和科研的目的进行交流和讨论,如有侵犯原作者的权益,请来信告知,我们将立即删除,并将删除结果给予答复,如有版权争议请与yhlbbs@126.com联系!