비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 108809
다음
진행 중
Lv.0
등록일: 2017-08-212017-08-21T09:48:10+09:00 2017-08-21T09:48:10+09:00카테고리: AutoCAD & CADian

while문의 결과값을 변수에 저장하는 방법

(defun c:Test ()
  ;; Tharwat 15. April. 2013 ;;
  (progn (princ “n Select single attributed block :”)
                (setq ss (ssget “_+.:S” ‘((0 . “INSERT”) (66 . 1))))
         )
    (setq n (entnext (ssname ss 0)))
    (while (not (eq (cdr (assoc 0 (setq e (entget n)))) “SEQEND” ))
       (if (eq (cdr (assoc 0 e)) “ATTRIB”)
         (print (cdr (assoc 1 e)))
       )
       (setq n (entnext n))
    )
  (princ)
)
===================================================
위 리습은 리습을 실행하고 블록을 선택하면 
그 블록의 고급 속성의 값들만 따로 출력해주는 리습입니다.
제가 궁극적으로 만드려고 하는 리습은 이 값들을 현재 엑셀에 띄워져 있는 일정 위치의 값들로 일괄변경 하는 리습인데요.
일단 그러려면 블록들의 속성값을 변수에 저장해야 한다고 생각해서
고급 블록의 속성값을 get해주는 리습을 외국 포럼에서 찾아다니다가 발견한 게 위 리습입니다.
while문으로 속성값들을 걸러서 결과값이 출력되는것까지는 이해했습니다. 
이게 while문으로 나온 값들이 print되는것까지는 좋은데
여기서 이 결과값들을 도저히 변수로 넣는 방법을 모르겠습니다..
프로그램쪽 전공도 아니고 리습 제작도 처음 해보느라 맨땅에 헤딩 수준입니다…
일주일동안 포럼찾고 검색 계속 돌리다가(고급 블록, 블록 속성 등등으로 여기서도 검색해봄..)
도저히 모르겠어서 이렇게 올립니다.. 도와주세요.. 어떻게 해야 할까요
  • 0
  • 6 6 답변
  • 18 조회
공유
  • Facebook

    관련 있는 질문들

    • mvsetup 및 align 안됨
    • mvsetup 및 align 안됨
    • 에어컨 실외기 도면
    • cad에서 기준점 복사 후 다른 파일에 붙여넣기 시 블록참조객체의 길이가 줄어들어있어요

    6 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. [Deleted User]
      2017-08-21T16:58:25+09:00답변 등록 답변 등록 일시 2017-08-21 4:58 pm

      해결했습니다. 감사합니다.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. [Deleted User]
      2017-08-21T14:10:48+09:00답변 등록 답변 등록 일시 2017-08-21 2:10 pm

      예를 들자면, 블록의 고급 속성의 속성값이 a b c d e f 이렇게 6개가 있다고 가정했을 때 print를 쓰면 “a” “b” “c” “d” “e” “f” 로 출력이 되는데, print 부분을 setq로 바꾸면 변수 LL에는 “f”만 들어가 있게 됩니다. 저는 변수 LL에 “a b c d e f” 가 들어가게 하고 싶은 거구요.


      질문에 위와 같이 쓰라구요. 그래야 답변을 달지 추상적이게 원하는 바만 질문달면 원하는 답변을 얻기 힘듬니다.
      리스트 처리인데 cons, append 함수로 처리하세요(변수 초기화 주의) 마찬가지로 도움말 참고

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. [Deleted User]
      2017-08-21T13:07:02+09:00답변 등록 답변 등록 일시 2017-08-21 1:07 pm

      질문글에도 이미 썼다시피, “일단은” while문으로 나온 결과값들을 변수에 담고 싶습니다. 다른 것들은 다 되는데 그 부분만 막히는 거라서요.

      그리고 print로 되어있는 그 부분을 setq로 바꾸면 while문의 각각의 결과값들이 변수에 담기는 게 아니라, 맨 마지막으로 출력된 결과값만 변수에 들어갑니다.
      예를 들자면, 블록의 고급 속성의 속성값이 a b c d e f 이렇게 6개가 있다고 가정했을 때 print를 쓰면 “a” “b” “c” “d” “e” “f” 로 출력이 되는데, print 부분을 setq로 바꾸면 변수 LL에는 “f”만 들어가 있게 됩니다. 저는 변수 LL에 “a b c d e f” 가 들어가게 하고 싶은 거구요.
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    5. [Deleted User]
      2017-08-21T12:36:55+09:00답변 등록 답변 등록 일시 2017-08-21 12:36 pm
      다음 구성을 어떻게 하실지 의도를 모르기 때문에 답변을 정확히 할 수 없습니다
      리스트로 처리할 건지, 값을 변수에 담아서 어떻게 하실런지
      (print (cdr (assoc 1 e)))
      ↓
      (setq LL (cdr (assoc 1 e)))

      그리고 변수에 넣을 필요없이 바로 엘셀로 옮겨도 됩니다

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    6. [Deleted User]
      2017-08-21T12:21:05+09:00답변 등록 답변 등록 일시 2017-08-21 12:21 pm

      setq 함수를 어디에 어떻게 쓰면 되는지 알려주십시오.

      print 다음 줄에 (setq LL (cdr (assoc 1 e)))로 쓰면 되지 않을까 하고 시도해봤는데 안되더군요.
      (setq LL “(cdr (assoc 1 e))”) 이나 (setq LL ‘(cdr (assoc 1 e)))도 시도해봤습니다만 안되는군요.
      autocad 도움말에는 setq 검색해봐도 아무 내용도 나오지 않습니다.
      구글링으로 찾은 autolisp의 setq 도움말은 이거 같은데 이걸 봐서는 어떻게 해야 하는지 잘 모르겠습니다.
      https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-AutoLISP/files/GUID-2F4B7A7B-7B6F-4E1C-B32E-677506094EAA-htm.html
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    7. [Deleted User]
      2017-08-21T12:02:33+09:00답변 등록 답변 등록 일시 2017-08-21 12:02 pm

      setq 함수(도움말 참고)

      • 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