비밀번호를 잊으셨나요?

비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.

계정이 있나요? 로그인

You must login to ask a question.

비밀번호를 잊으셨나요?

아직 계정이 없으신가요? 회원가입 하기

해당 질문을 신고하는 이유를 간단히 입력해주세요.

해당 답변을 신고하는 이유를 간단히 입력해주세요.

해당 유저를 신고하는 이유를 간단히 입력해주세요.

로그인회원가입

고캐드 – 캐드(CAD) 정보의 중심

고캐드 – 캐드(CAD) 정보의 중심 Logo 고캐드 – 캐드(CAD) 정보의 중심 Logo

고캐드 – 캐드(CAD) 정보의 중심 Navigation

  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
검색
질문하기

Mobile menu

닫기
질문하기
  • 홈
  • 카테고리
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 투표
  • 커뮤니티 그룹
  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
홈/ 질문/Q 109290
다음
진행 중
윌러러러이
윌러러러이Lv.0
등록일: 2018-01-032018-01-03T15:28:29+09:00 2018-01-03T15:28:29+09:00카테고리: AutoCAD & CADian

이 리습을 자주 쓰는데 공통된 부분을 서브루틴으로 만들 수 있을까요?

(defun C:ww (/ obb oLL oUR ss LL UR)
(setq ss (ssget))
  (vl-load-com)
  (setq cla (getvar “clayer”))
  (if (= nil (tblsearch “LAYER” “00PLOT”))
     (command “layer” “make” “00PLOT” “COLOR” “16” “00PLOT” “P” “N” “00PLOT” “L” “hidden” “00PLOT” “”)
   )
  (setvar “CLAYER” “00PLOT”)
  (setvar “cecolor” “bylayer”)
  (command “-linetype” “set” “Bylayer” “”)
(defun obb (ent); = Object’s Bounding Box corners
(vla-getboundingbox (vlax-ename->vla-object ent) ‘minpt ‘maxpt)
(setq
oLL (vlax-safearray->list minpt); Object’s Lower Left
oUR (vlax-safearray->list maxpt); Object’s Upper Right
); setq
); defun — obb
(vl-load-com)
(prompt “nTo draw the Smallest Rectangle around them,”)
(setq ss (ssget “P”))
(obb (ssname ss 0))
(setq LL oLL UR oUR); initial overall LL & UR [of first object]
(ssdel (ssname ss 0) ss)
(repeat (sslength ss)
(obb (ssname ss 0))
(setq
LL (mapcar ‘min oLL LL); <———–이값과
UR (mapcar ‘max oUR UR); <———-이값
); setq
(ssdel (ssname ss 0) ss)
); repeat
(command “_rectang” “_none” LL “_none” UR)
(setvar “CLAYER” CLA)
(princ)
)
 

어디서 얻었는지는 지금 기억이 나지 않지만 자주 사용하는 리습입니다.
최종 LL, UR 값을 자주 씁니다.
다른리습을 사용할 때에도  LL, UR 값구하는 부분까지 공통으로 사용합니다.
똑같은 내용을 반복사용하다보니 조금 불편한 감이 있습니다.

혹시 이 리습을 서브루틴으로 만들어 LL, UR 값만 받아서 쓸 수 있도록 만들 수 있을까요?

만들 수 있다면 좀 알려주시면 감사하겠습니다.



  • 0
  • 3 3 답변
  • 14 조회
공유
  • Facebook

    관련 있는 질문들

    • 캐드에서 복사해서 방향 옮길때 다른방향으로 가요.
    • 캐드에서 복사해서 방향 옮길때 다른방향으로 가요.
    • FAQ 51을 참조 하라는데 FAQ가 어디에 있나요??
    • jsk.shx 파일 받을 부탁드립니다 ㅠ

    3 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. 수야12 Lv.21
      2018-01-03T18:39:08+09:00답변 등록 답변 등록 일시 2018-01-03 6:39 pm
      (defun C:ww (/ obb oLL oUR ss LL UR LLUR)
      (setq ss (ssget))
        (vl-load-com)
        (setq cla (getvar “clayer”))
        (if (= nil (tblsearch “LAYER” “00PLOT”))
           (command “layer” “make” “00PLOT” “COLOR” “16” “00PLOT” “P” “N” “00PLOT” “L” “hidden” “00PLOT” “”)
         )
        (setvar “CLAYER” “00PLOT”)
        (setvar “cecolor” “bylayer”) 
        (command “-linetype” “set” “Bylayer” “”)
      (defun obb (ent); = Object’s Bounding Box corners
        (vla-getboundingbox (vlax-ename->vla-object ent) ‘minpt ‘maxpt)
         (setq
             oLL (vlax-safearray->list minpt); Object’s Lower Left
             oUR (vlax-safearray->list maxpt); Object’s Upper Right
         ); setq
      ); defun — obb
      (defun LLUR()
       (setq
           LL (mapcar ‘min oLL LL); <———–이값과
           UR (mapcar ‘max oUR UR); <———-이값
       )
      )
      (prompt “nTo draw the Smallest Rectangle around them,”)
      (setq ss (ssget “P”))
      (obb (ssname ss 0))
      (setq LL oLL UR oUR); initial overall LL & UR [of first object]
      (ssdel (ssname ss 0) ss)
      (repeat (sslength ss)
      (obb (ssname ss 0))
      (LLUR)
      (ssdel (ssname ss 0) ss)
      ); repeat
      (command “_rectang” “_none” LL “_none” UR)
      (setvar “CLAYER” CLA)
      (princ)
      )
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. 윌러러러이 Lv.0
      2018-01-04T11:31:55+09:00답변 등록 답변 등록 일시 2018-01-04 11:31 am

      수야12님 답변 감사합니다.^^
      그런데 제가 설명을 잘 못해서 원하는 것을 얻지 못했네요.

      제가 원하는 것은

      (defun LLUR (/ obb oLL oUR ss LL UR)
      (vl-load-com)
      (setq ss (ssget))
      (defun obb (ent); = Object’s Bounding Box corners
      (vla-getboundingbox (vlax-ename->vla-object ent) ‘minpt ‘maxpt)
      (setq
      oLL (vlax-safearray->list minpt); Object’s Lower Left
      oUR (vlax-safearray->list maxpt); Object’s Upper Right
      ); setq
      ); defun — obb
      (obb (ssname ss 0))
      (setq LL oLL UR oUR); initial overall LL & UR [of first object]
      (ssdel (ssname ss 0) ss)
      (repeat (sslength ss)
      (obb (ssname ss 0))
      (setq
      LL (mapcar ‘min oLL LL); <———–이값과
      UR (mapcar ‘max oUR UR);  <———-이값
      ); setq
      (ssdel (ssname ss 0) ss)
      ); repeat
      (princ)
      )

       

      (defun c:test ()
      (command “rectangle” LL UR)
      (princ)
      )

       

      이런식으로
      위에것을 서브루틴으로 만들어서
      다른 리습에서 서브루틴의 LL UR값만 받아서 사용할 수 있는지
      있다면 방법이 무엇인지 알려주시면 안될까요??

      리습을 배운게 아니라 여기저기서 짜집기해서 사용하다보니
      원하는 것을 얻기가 쉽지가 않네요ㅜㅜ

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. [Deleted User]
      2018-01-04T16:11:22+09:00답변 등록 답변 등록 일시 2018-01-04 4:11 pm
      (defun llur (&ll &ur / ss  i lls urs) (vl-load-com)
      (if (setq ss (ssget))
      (progn
      (repeat (setq i (sslength ss))
      (vla-getboundingbox (vlax-ename->vla-object (ssname ss (setq i (1- i)))) ‘minpt ‘maxpt)
      (setq
      lls (cons (vlax-safearray->list minpt) lls)
      urs (cons (vlax-safearray->list maxpt) urs)
      )
      )
      (set &ll (apply ‘mapcar (cons ‘min lls)))
      (set &ur (apply ‘mapcar (cons ‘max urs)))
      T
      )
      )
      )
      (defun c:test ()
      (if (llur ‘LL ‘UR)
      (command “rectangle” “_non” LL “_non” UR)
      )
      (princ)
      )
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter

    Sidebar

    질문하기
    공지사항

    • AI CAD의 미래! 캐디안 2025 1+1 프로모션 안내 2025-05-14

    Adv 234x60

    aalan

    Adv 234x60

    aalan

    Adv 120x600

    aalan

    Explore

    • 홈
    • 카테고리
      • AutoCAD & CADian
      • Inventor & Solidworks
      • Revit & ArchiCAD
      • 자유질문
      • 기타
    • 투표
    • 커뮤니티 그룹
    aalan

    Footer

    Support

    • 회사 및 서비스 소개
    • 자주 묻는 질문
    • 문의하기

    Guide

    • 제휴/협업 안내
    • 광고 서비스 안내

    Policy

    • 서비스 이용약관
    • 개인정보 처리방침
    • 광고성 정보 수신 동의

    Contents

    • 고밍스토리
    • 리습 시리즈

    정소프트 | 사업자등록번호 : 677-40-00198 | 대표 : 정은숙 | 이메일 : gocad.manager@gmail.com
    주소 : 서울특별시 강서구 양천로 400-12, 6층 614,615,617호(등촌동, 더리브골드타워)
    Copyright. 2012-2024 GOCAD All rights reserved