• GstarCAD 2023 다운로드
  • 설치파일
  • 온라인 쇼핑몰
  • 카달로그
  • 파트너 가입문의

Q & A

오토캐드 리습 몇개가 안됩니다.

페이지 정보

작성자 손병종 조회   655회 작성일   23-08-24 10:09

본문

오토캐드에서 사용한 리습을 지스타캐드에 적용하면 안되는것들이 있습니다.


지스타캐드에서도 사용가능하게 확인 부탁 드립니다.


1. ;=====================================

;=== 잘라진 선 이어 붙이기============

;=====================================

(defun C:bb ( / loop a b x x1 x2 y1 y2 g1 g2 g3 g4 g5 g6)

(setq loop 1)

(while loop

  (while (not(setq a (car(entsel "\nSelect first object "))))

          )

  (if (= "LINE" (cdr(assoc 0 (entget a))))

          (setq loop nil)

          (prompt (strcat "\nBad type " (cdr(assoc 0 (entget a)))))

         )

 )

(redraw a 3)

(setq loop 1 a (entget a))

(while loop

  (while (not(setq b (car(entsel "\nSelect second object "))))

          )

  (if (= "LINE" (cdr(assoc 0 (entget b))))

          (setq y1 (cdr(assoc 10 (entget b))) y2 (cdr(assoc 11 (entget b)))

          loop nil)

          (prompt (strcat "\nBad type " (cdr(assoc 0 (entget b)))))

         )

 )

(entdel b)

(setq x1 (cdr(assoc 10 a)) x2 (cdr(assoc 11 a))

g1 (distance x1 x2) g2 (distance x1 y1) g3 (distance x1 y2)

g4 (distance x2 y1) g5 (distance x2 y2) g6 (distance y1 y2)

x (max g1 g2 g3 g4 g5 g6))

(cond

 ( (= x g1) (setq y1 x1 y2 x2))

 ( (= x g2) (setq y2 x1))

 ( (= x g3) (setq y1 x1))

 ( (= x g4) (setq y2 x2))

 ( (= x g5) (setq y1 x2))

 )

(entmod (subst (cons 10 y1) (cons 10 x1) (subst (cons 11 y2) (cons 11 x2) a)))

(prin1)

)

(defun C:over_center( / loop sele selbase point p1 p2 p3 p4)

(setq loop T)

(while loop

  (while (not(setq sele (car(entsel "\nSelect extend object ")))))

  (if (= "LINE" (cdr(assoc 0 (entget sele))))

          (setq loop nil)

          (prompt (strcat "\nBad type " (cdr(assoc 0 (entget sele)))))

         )

 )

(redraw sele 3)

(setq loop T)

(while loop

  (while (not(setq selbase (car(entsel "\nSelect extend object ")))))

  (if (= "LINE" (cdr(assoc 0 (entget selbase))))

          (setq loop nil)

          (prompt (strcat "\nBad type " (cdr(assoc 0 (entget selbase)))))

         )

 )

(setq p1(cdr (assoc 10 (entget sele))) p2(cdr (assoc 11 (entget sele)))

      p3(cdr (assoc 10 (entget selbase))) p4(cdr (assoc 11 (entget selbase)))

    point(inters p1 p2

                 (polar (inters p1 p2 p3 p4 nil) (angle p3 p4) 1)

                 (polar (inters p1 p2 p3 p4 nil) (angle p4 p3) 1)))

(if point

            (progn

              (initget 1)

              (setq loop(getpoint point "\nWay point "))

              (if (< (distance loop (polar point (angle p2 p1) 1))

                     (distance loop (polar point (angle p1 p2) 1)))

               (setq p1 (cons 10 (polar point (angle p2 (setq p2 p1)) 2.5))

                     p2 (cons 10 p2))

               (setq p1 (cons 11 (polar point (angle p1 p2) 2.5))

                     p2 (cons 11 p2))

               )

             )

            (progn

              (setq point(inters p1 p2

               (cdr (assoc 10 (entget selbase)))

               (cdr (assoc 11 (entget selbase))) nil))

              (if (< (distance p1 point) (distance p2 point))

                (setq loop 10 p2 (cons 10 p1))

                (setq loop 11 p2 (cons 11 p2))

                )

             (setq p1 (cons loop (polar point (angle p1 point) 2.5)))

            )

           )

(entmod (subst p1 p2 (entget sele)))

(command "chprop" sele ""

        "lt" "center" "c" "red" "")

(prin1)

)


2. ;=================

;=== Copy Base === 

;=================

(defun c:cb()

(setq ww(getvar "cdate")

xx1(itoa (getvar "SPLINESEGS"))

aa1(itoa (fix (getvar "DIMSCALE")))

bb1(itoa (fix (getvar "LTSCALE"))))

(setq we(rtos ww 2 4) wr(substr we 1 4) wt(substr we 5 2)

wy(substr we 7 2) wx(substr we 10 2)wz(substr we 12 2))

(setq sec (rtos (setq seconds (* 864000 (- ww (fix ww)))) 2 0))

(setq bl_name(strcat wr wt wy wx wz sec))

(prompt "\n ********* 영역을 선택하세요. :")

(setq MI(SSGET))

(setq p1 (getpoint "\n ******** 중심점을 선택하세요 (^-^)γ : "))

; (setq p1 "0,0") ;; 중심점 선택도 싫다면...

(command "WBLOCK" bl_name "" P1 MI "")

(prompt "\n ******** SUCCESS TO REMAKE BLOCK !!! BLOCK NAME [ ")

(prin1 bl_name)(prompt " ]")

(command "insert" bl_name p1 "" "" "")

(PRIN1)) 

- 블록 설정하는 명령어
스크롤 상단 이동