6-7 eo.lsp=Easy Offset (파워옵셋하기)->수정(2007.12.22)
본문 바로가기
■ 유용한 캐드&리습/▫ EzqCAD(3rd Party)

6-7 eo.lsp=Easy Offset (파워옵셋하기)->수정(2007.12.22)

by 아키모아 주말농부 2024. 12. 20.
728x90

  6-7 eo.lsp=Easy Offset (파워옵셋하기)->수정(2007.12.22)
            블럭,치수에서도 작동되는 파워옵셋 명령어.

            일반객체을 선택하면 offset명령이 작동되고 블럭,치수등에 있는

            객체을 선택하면 선택한 객체와 평행하게 라인이 그려지는 명령어.

 

;;=============================================================================
;  파워옵셋하기 (97 주말농부)
;  -> 블럭,치수에서도 작동되는 파워옵셋 명령어
;  -> 일반객체을 선택하면 offset명령이 작동되고 블럭,치수등에 있는 객체을
;     선택하면 선택한 객체와 평행하게 라인이 그려지는 명령어.(2007.12.22)
;;------ easy offset ----------------------------------------------------------
(defun c:eo(/ os bl cm a od ent en ed ename d1 ag1 pt0 pt2 pt3 pt4 pt5 pt6 pt7)
;->*error* start
 (defun *error* (msg)(princ "error: ")(princ msg)
 (setvar "osmode" os)(setvar "blipmode" bl)
 (setvar "cmdecho" cm)
 (princ))
;-<*error* end
   (setq os (getvar "osmode") bl (getvar "blipmode") cm (getvar "cmdecho"))
   (setvar "blipmode" 1) (setvar "cmdecho" 0)
   (setq a (strcat "\n간격띄우기 거리 지정 <"
                           (rtos (getvar "offsetdist") 2 2) ">: "))
   (setq od (getdist a))
   (if (= od nil) (setq od (getvar "offsetdist")) (setvar "offsetdist" od))
   (setvar "osmode" 512);nea
   (setq ent (entsel "\n간격띄우기할 객체 선택 <종료>->"))
   (while ent
      (setq en (car ent) ed (entget en) ename (cdr (assoc 0 ed)))
      (setq pt0 (cadr ent))
      (if (or (= ename "INSERT") (= ename "DIMENSION"))
         (progn
            (setvar "blipmode" 0)
            (command "id" "mid" pt0) (setq pt1 (getvar "lastpoint"))
            (command "id" "endp" pt0) (setq pt2 (getvar "lastpoint"))
            (setvar "osmode" 0) (setq d1 (distance pt2 pt1) ag1 (angle pt2 pt1))
            (setq pt3 (polar pt1 ag1 d1))
            (setq pt4 (getpoint "\n간격띄우기할 면의 점 지정 <나가기>->"))
            (if pt4 (progn
               (setq pt5 (polar pt4 (+ ag1 (/ pi 2)) od))
               (setq pt6 (inters pt2 pt3 pt4 pt5 nil))
               (setq ag2 (angle pt6 pt4) pt7 (polar pt6 ag2 od))
               (command "line" pt2 pt3 "")
               (command "move" "l" "" pt6 pt7) ))
         )
         (command "offset" "" ent pause "")
      )
      (setvar "osmode" 512);nea
      (setq ent (entsel "\n간격띄우기할 객체 선택 <종료>->"))
   );while end
   (setvar "osmode" os) (setvar "blipmode" bl) (setvar "cmdecho" cm)
(prin1))

 

 

eo.lsp
0.00MB

728x90