CAFE

★ CAD/LISP/분과 Q&A

[[Lisp]](setq attLst(vlax-safearray->list(vlax-variant-value (vla 객체 : 블럭내 속성문자))))이 구문이 블럭내 속성문자의 WCS좌표값을 받아오는 건가요??

작성자아부라카다부라|작성시간12.06.12|조회수350 목록 댓글 2

 

성심 성의껏 질문을 작성하여 주세요, 대충하시면 답변도 대충작성합니다.^^

 

 - 제목 작성시 금지어

   만들어주세요? 해주세요? 안되는데 이렇게 변경해주세요? 등등

- 특정분과 질문은 제목에 분과삽입 [건축] 

   좋은예) [분과]무엇에 대해 문의합니다. /[분과]B로 바꾸는 방법을 알고싶습니다.

- 말머리 필수 

 

① CAD 종류   : 오토캐드

② VERSION   : 2011

③ 운영 체제    :WIN7

  

④ 질문내용 및 스크린샷(이미지 및동영상)

    아래 도곽내 도면명 수정하기 리습을 짜다(남의 리습 편집 정도..ㅜㅜ)보니 좌표를 받아오는 구문이 있는데.. 이해가 안되는거 같아 이렇게 질문 드립니다..

 

(setq attLst (vlax-safearray->list (vlax-variant-value (vla-GetAttributes obj)))) ; obj은 vl객체

 

위 구문은 블럭내 속성문자의 삽입점을 가져오는 기능을 하는 건가요???

 

 

 

 

(defun c:att2 ( / Number ss
     subEnameObjLst
     subEditAtt     
    )
    
 (defun subEnameObjLst (ss)
  (mapcar 'vlax-ename->vla-object
   (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  )
 );달수님
 (defun subEditAtt (obj / subPathTrim subPointVar  LM:StringSubst attLst objLst str)
 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 서브루틴 시작 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
  (defun subPathTrim (p s)
   (if (setq c (vl-string-search p s))
    (subPathTrim p (substr s (+ c (1+ (strlen p))))) s)
  );달수님
  (defun LM:StringSubst ( new old string / l i ) (setq l (strlen new) i 0)
   (while (setq i (vl-string-search old string i))
    (setq string (vl-string-subst new old string i) i (+ i l))
   )
   string
  )
  (defun subPointVar (obj)
   (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj)))
  );달수님

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 서브루틴 끝 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
  (setq attLst (vlax-safearray->list (vlax-variant-value (vla-GetAttributes obj))))
  (mapcar '(lambda (att)(setq objLst (cons (list (subPointVar att) att) objLst))) attLst)
  (foreach obj (mapcar 'cdr objLst)
   (setq str (vla-get-textstring (car obj)))
   (if (wcmatch str "*AB*")
    (vla-put-textstring (car obj) (LM:StringSubst (itoa Number) (subPathTrim "A0" str) str))
   )
  )
 );달수님
 
 
 (setq Number (getint (strcat "\n시작 넘버 입력: ")))
 (setvar 'ERRNO 0)
 (while (= (getvar 'ERRNO) 0)
  (if (setq ss(ssget ":S" '((0 . "INSERT"))))
   (subEditAtt (car (subEnameObjLst ss)))
  )
  (setq Number (1+ Number))
 )
 (princ)
)

 

 

 

 

⑤ 파일첨부 (LISP/DWG) - DWG 첨부시 보다 정확한 답변을 얻을수 있습니다.

 

 

 

 

※ 유의사항

 - ①말머리 : 말머리를 달아야 구분이 쉽겠죠^^

 - ②Screenshot : 이해를 돕기위해 삽입요망.

 - ③파일 첨부 : 상위버전에서 테스트할 파일이 아니면 가급적 하위버전으로 저장후 첨부.

                          해당리습/해당파일(DWG) 도 같이 첨부하여 주세요.

 - ④       목 : 질문 내용 반영(개략적인 내용),       예) 해치를 만들고 싶어요, pline을 연결할려면?

 - ⑤질문글 삭제금지 : 질문후 댓글이 달린글은 삭제금지.

    여러 리플러들이 소중한 시간을 내어서 고민한후 댓글을 작성한 이상 "강력조치" 토록 하겠음. 

 

※ 정답만이 댓글은 아닙니다. 그 답이 맞던 틀리던 그건 그 댓글로서 존중되어야 합니다.

    회원님들이 글을 읽었다는것과 댓글을 달았다는건 그만큼 관심을 가지고 있고 또 그 답을 해주기 위해

    검색도 해보고 도움말도 보고 고민도 하는 일련의 과정을 거치면서 나오기 때문이죠.

    이에 대한 고마움과 감사함을 모르는 테러행위(?)는 없었으면 합니다.

 

 

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 삭제된 댓글입니다.
  • 답댓글 작성자아부라카다부라 작성자 본인 여부 작성자 | 작성시간 12.06.12 속성문자의 삽입점이란거죠? 절대좌표??? 좌표가 참 어렵네요!!
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼