비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 108054
다음
진행 중
Lv.0
등록일: 2017-02-282017-02-28T14:53:57+09:00 2017-02-28T14:53:57+09:00카테고리: AutoCAD & CADian

안녕하세요, 리습을 수정하고 싶습니다 ㅠ

안녕하세요 고캐드에서 여러 리습을 보고 배우는 학생입니다. 

이번에 리습을 공부 하고 싶고, 수정하고 싶어 사진 현제 상황을 사진으로 찍었으나
사진이 올라가지 않아 글로 적어 봅니다. 
(defun c:lp (/ ss en n n1 k tot dis dis1)
(prompt “nCommand: Line Plus…”)
(prompt “n line을 선택-> “)
(setq d_ts (getvar “textsize”)
os (getvar “osmode”)
dlf (getvar “dimlfac”)
)
(setq ht d_ts)
(setq ss (ssget))
(setq n1 (sslength ss))
(setq n n1
k 0
)
(setq tot 0
dis 0
dis1 0
)
(while (<= 1 n)
(setq en (ssname ss k))
(setq stype (cdr (assoc 0 (entget en))))
(if (= stype “LINE”)
(progn
(setq spt (cdr (assoc 10 (entget en))))
(setq ept (cdr (assoc 11 (entget en))))
(setq dis1 (distance spt ept))
(setq dis (/ dis1 1000))
(prin1 dis)
(setq tot (rtos dis 2 4))
(setq p1 spt)
(command “text” “j” “bc” p1 ht “0” tot)
(setq n (- n 1))
(setq k (+ k 1))
)
)
))
현재사용하고 있는 선의 길이를 구하는 리습입니다. 
적용을 시키면, 치수문자가 첫번째 점 주변에서 놀고 있습니다. 또 한 글씨 크기도 굉장히 작습니다. 
———–
제가 명령어를 적용시켰을 때, 치수문자는 spt와 ept의 중간에 올 수 있도록 하고 싶구요,
dimstyle의 치수문자 크기와 같게 문자크기를 정하고 싶습니다. 
코딩을 할 줄 몰라서, 이것저것 보고, 치수 바꾸어 가며 해보고있는데, 마음처럼 되지않아.. 글을 
올립니다 ㅠ.ㅠ  혹시 설명이나, 리습코딩 하는 것을 배우고 싶은데, 어떤 책이 좋은지 추천 또 한 
부탁드립니다. ㅠ.ㅠ 읽어 주셔서 감사합니다 
  • 0
  • 3 3 답변
  • 21 조회
공유
  • Facebook

    관련 있는 질문들

    • 오토캐드 2016 맞춤법 검사기 끄는 방법 아시나요
    • 캐드에서 여러도면을 한번에 배치출력 할 수 있는 방법이 있나요
    • step파일, iges 파일을 열어서 볼 수 있는 방법이 있을까요?
    • 캐디안으로 도면을 열때 한글이 ???로 표시되는 문제

    3 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. 시모 Lv.0
      2017-02-28T15:45:09+09:00답변 등록 답변 등록 일시 2017-02-28 3:45 pm
      의도가 공부용 이라면….
      1. 변경할 구문을 한번 훑어보고 대략적인 작동 방식을 파악해봅니다.
      –> ssget으로 객체를 선택하고, line객체 일 경우에 조건문을 실행하는 방식으로 작성되어 있습니다.
      –> 조건문의 마지막에는 command 함수로 글자를 적어주는군요.
      2. 문자의 위치를 변경하려면 문자가 작성되는 구문을 먼저 확인해봅니다.
      –> (command “text” “j” “bc” p1 ht “0” tot)
      3. command 함수로 작성된 구문이니 명령창에 직접 실행해봅니다.
      –> 명령: text
      –> 명령: 문자의 시작점 지정 또는 [자리맞추기(J)/스타일(S)]: j 
      –> 옵션 입력 [왼쪽(L)/중심(C)/오른쪽(R)/정렬(A)/중간(M)/맞춤(F)/맨위왼쪽(TL)/맨위중심(TC)/맨위오른쪽(TR)/중간왼쪽(ML)/중간중심(MC)/중간오른쪽(MR)/맨아래왼쪽(BL)/맨아래중심(BC)/맨아래오른쪽(BR)]: bc
      –> 문자의 맨 아래 중심점 지정: p1
      –> 높이 지정 <3.0000>: ht
      –> 문자의 회전 각도 지정 <0>: 0
      –> 문자 내용: tot
      그럼 문자가 작성되는 위치는 p1, 문자의 높이는 ht, 문자 내용은 tot 변수로 제어하는 것을 알 수 있습니다.
      4. 치수 문자의 위치를 먼저 변경해봅니다.
      –> p1 변수가 바로위에 spt로 지정되어 있네요.
      –> 위에 확인해보니 (setq spt (cdr (assoc 10 (entget en)))) 형식으로 되어있네요.
      –> entget, assoc 등의 함수는 AutoCAD 도움말에서 쉽게 찾아볼 수 있습니다.
      –> 10번 코드는 Line의 시작점, 11번 코드는 Line의 끝점을 저장하니 시작점은 spt, 끝점은 ept로 저장되어 있네요.
      –> 그러면 spt가 어떤 형식으로 저장되어 있는지 확인해봅니다.
      –> (cdr (assoc 10 (entget (car (entsel))))) 을 명령창에 입력한 뒤 Line 객체를 선택하면 아래와 유사하게 나옵니다.
      –> (200.0 100.0 0.0)
      –> spt, ept는 (list x y z) 형식으로 좌표가 저장되어 있음을 확인할 수 있습니다.
      –> 두 점의 중간을 계산하려면???
      –> 간단하게 두 점을 더한다음 반으로 나누면 됩니다.
      –> 물론 mapcar 함수를 사용한다면 훨씬 깔끔하게 나오지만.. 공부용이니 mapcar와 같은 최종보스 기능은 사용하지 않습니다.
      –> list의 내용을 받아오는 함수는 car, cadr, caddr, nth, last, cdr 등등.. 많이 있지만 여기서는 nth로 통일합니다.
      –> 마지막 p1 변수를 아래처럼 변경하면 되겠죠
      (setq p1
        (list
          (/ (+ (nth 0 spt) (nth 0 ept)) 2.0)
          (/ (+ (nth 1 spt) (nth 1 ept)) 2.0)
          (/ (+ (nth 2 spt) (nth 2 ept)) 2.0)
        )
      )
      5. 문자의 높이를 현재 치수 스타일의 문자 크기와 같게 해봅니다.
      –> 먼저 현재 문자의 높이가 어떻게 저장되고 있는지 찾아봅니다.
      –> 시스템 변수 중 dimtxt에 저장되고 있습니다.
      –> 그리고 이 값에 dimscale 변수가 곱해진 값이 치수문자가 출력되는 실제 문자높이 입니다.
      –> 그럼 현재 치수문자높이와 동일하게 문자 높이를 변경하려면???
      –> 시스템 변수 dimtxt, dimscale을 받아와서 두 값을 곱하면 됩니다.
      –> 아까 높이값이 ht 변수로 저장되고 있다고 했으니 ht변수를 변경하면 되겠네요.
      –> (setq ht d_ts) 부분을 아래와 같이 변경합니다.
      –> (setq ht (* (getvar ‘dimtxt) (getvar ‘dimscale)))
      공부하려고 따로 책은 구매해보지 않아 책 추천은 못해드리겠네요..
      지금 이 리습만으로도 많은 걸 배울 수 있습니다.
      여기에서 command를 사용하지 않고 text를 만드는 구문도 찾아보고 적용할 수 있구요.
      아까 넘어갔던 mapcar 함수를 사용할 수도 있구..
      ssget에서 처음부터 line 객체만 선택하도록 필터링하는 옵션도 있습니다.
      그냥 다른사람이 만든 리습을 써보고 그 리습 내용은 보지말구 똑같이 동작해보도록 해보세요~
      그러다 막히면 열어서 어떤 함수 썼는지 확인해보구요ㅎㅎ
      많이 만들어보고 직접 써보면서 어떤 점이 불편한지 생각도 해보고..
      그렇게 하다보면 어느새 자기것이 되어있더라구요ㅋㅋ
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. 수야12 Lv.21
      2017-02-28T16:25:07+09:00답변 등록 답변 등록 일시 2017-02-28 4:25 pm

      헐 시모님이 이미 답글을 달았지만 저도 손가락 꼼지락 거린게 있어서 올립니다 ^^;; 

      첨부파일 열어보세요 

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. [Deleted User]
      2017-02-28T16:46:09+09:00답변 등록 답변 등록 일시 2017-02-28 4:46 pm

      안녕하십니다.  시모님과 수야12님께 정말 감사의 말전하고 싶습니다.. 덕분에 공부도 할 수 있었고, 여러가지 배울 수 있었습니다. 정말 너무나도 감사드립니다. 하루종일 찾아봤는데, 진작에 올려볼껄 그랬습니다. 귀중한 시간과 댓글 너무 나도 감사합니다.. (꾸벅)

      • 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