明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: cj52000

有没有随意拖拽坐标标注的LISP?

  [复制链接]
发表于 2013-8-12 15:41:31 | 显示全部楼层
大神们就是nb
发表于 2013-8-16 02:41:27 | 显示全部楼层
顶顶顶顶顶顶
发表于 2013-8-16 03:51:53 | 显示全部楼层
;拉伸坐标标注
;用鼠标点起尺寸或坐标标注块然后拉伸,当你点取了其它物体时要求你重选
;当你按回车时或点了空格时退出

(DEFUN c:AF()
  (while (setq ed1 (entsel "\n请选择坐标标注或尺寸标注:"))
    (setq pt1 (cadr ed1))  ;取出点取的坐标
    (setq en1 (car ed1))
    (setq ed2 (entget en1))
  
    (setq dd 2)
    (setq ss1 (ssadd))
    (setq ss2 (ssadd))
    (if(= (strcase (cdr (assoc 0 ed2))) "DIMENSION")
    (progn
      (setq pt2 (cdr (assoc 11 ed2)))  ;文字中点
      (setq pt3 (cdr (assoc 14 ed2)))  ;标注右侧点
      (setq pt10 (cdr (assoc 10 ed2)))  ;插入点坐标
      (setq dx  (abs (- (car pt2) (car pt3))))
      (setq dy  (abs (- (cadr pt2) (cadr pt3))))
      (if(> dx dy)
       (progn
        (if(> (car pt2) (car pt3))
         (progn
           (setq pt4 (list (+ (car pt2) dd) (+ (cadr pt2) dd))) ;窗口左上角点  
           (setq pt5 (list (- (car pt3) dd) (- (cadr pt2) dd))) ;窗口右下角点
         )  ;水平
         (progn
           (setq pt4 (list (+ (car pt3) dd) (+ (cadr pt2) dd)))
           (setq pt5 (list (- (car pt2) dd) (- (cadr pt2) dd)))
         )
        )
       )
       (progn
        (if(> (cadr pt2) (cadr pt3))
         (progn
           (setq pt4 (list (+ (car pt2) dd) (+ (cadr pt2) dd)))
           (setq pt5 (list (- (car pt3) dd) (- (cadr pt3) dd)))
         )
         (progn
           (setq pt4 (list (+ (car pt3) dd) (+ (cadr pt3) dd)))
           (setq pt5 (list (- (car pt2) dd) (- (cadr pt2) dd)))
         )  ;progn
        ) ;if
       )  ;progn
      )  ;if
;以上是处理坐标标注 以下是处理尺寸标注
      (if(and (/= (car pt2) (car pt3)) (/= (cadr pt2) (cadr pt3)))  
       (progn  ;处理尺寸标注
        (if(> (abs (- (car pt2) (car pt10)))  (abs (- (cadr pt2) (cadr pt10))))
         (progn  ;水平向
          (setq pt4 (polar pt2 (/ pi 20) dd))
          (setq pt5 (polar pt2 (* pi 1.05) dd))
         )
         (progn   ;垂直向
          (setq pt4 (polar pt2 (* pi 0.45) dd))
          (setq pt5 (polar pt2 (* pi 1.45) dd))
         )
        )
       )
      )
      (setq pt4 (trans pt4 2 1))
      (setq pt5 (trans pt5 2 1))
;     (setq pt1 (trans pt1 2 1))
      (setq ss1 (ssget "c" pt4 pt5));
      (setq i (sslength ss1))
      (setq j 0)
      (setq k 0)
      (if(> i 1)
         (progn
          (setq ss2 (ssdel en1 ss1))
          (setq k 1)
         )
      )
      (if(> i 0)
        (if(= k 0)
          (command "stretch" "c" pt4 pt5 "" pt1 pause)
          (command "stretch" "c" pt4 pt5  "r" ss2 "" pt1 pause)
        )
      )
     )  ;progn
     (progn
       (princ "\n你应该选择坐标标注,若想退出按回车或空选!!")
     )
    ) ;if  
  )  ;while
)
---------------------------------------------------------
;双向标注
(DEFUN c:AG()
  (setq layername (getvar  "clayer"))
  (setq mylayer      (substr layername 1 2))
    (if(< (strlen mylayer) 2) (setq mylayer "dim")
           (progn
               (setq mylayer  (strcat mylayer "dim"))
               (if(not (tblsearch "LAYER" mylayer))
                   (setq mylayer   "dim")
               )
           )
       )
  (command "layer" "u" mylayer  "")
  (command  "layer" "t"  mylayer "")
  (command  "layer"  "s"  mylayer  "")
  (command "layer" "on" mylayer "")
  (while(setq pt1 (getpoint "\n请输入标注起点坐标:"))
   (while(not (setq pt2 (getpoint pt1 "\n请输入标注终点坐标:"))) (setq i 1))
   (setq fjosmode (getvar "osmode"))
   (setvar "osmode" 0)
   (setq x1 (car pt1)  y1 (cadr pt1))
   (setq x2 (car pt2)  y2 (cadr pt2))
   (if(< (abs (- x2 x1)) (* 0.1 (abs (- y2 y1))))
    (command "dimordinate" pt1 pt2)
  
    (if(< (abs (- y2 y1)) (* 0.1 (abs (- x2 x1))))
      (command "dimordinate" pt1 pt2)
      (progn
        (setq pt3 (list x1 y2))
        (command "dimordinate" pt1 pt3)
        (setq pt3 (list x2 y1))
        (command "dimordinate" pt1 pt3)
      )
    )
   )
   (setvar "osmode" fjosmode)
  )
(command "layer" "s" layername "")  
)
发表于 2013-8-16 17:18:28 | 显示全部楼层
顶!!!!!!!!
发表于 2013-9-5 13:34:12 | 显示全部楼层
顶下,看G版程序
发表于 2013-9-19 11:08:01 | 显示全部楼层
学习一下反应器。
发表于 2013-9-19 15:29:15 | 显示全部楼层
厉害!真是厉害!
发表于 2013-9-20 10:17:10 | 显示全部楼层
路过瞧一瞧,G版的要看的
发表于 2013-9-20 17:27:59 | 显示全部楼层
好东西!!!!!!!
发表于 2013-9-22 09:14:32 | 显示全部楼层
回复看gu版
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-19 12:17 , Processed in 0.172582 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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