성심 성의껏 질문을 작성하여 주세요, 대충하시면 답변도 대충작성합니다.^^
- 제목 작성시 금지어
만들어주세요? 해주세요? 안되는데 이렇게 변경해주세요? 등등
- 특정분과 질문은 제목에 분과삽입 [건축]
좋은예) [분과]무엇에 대해 문의합니다. /[분과]B로 바꾸는 방법을 알고싶습니다.
- 말머리 필수
① CAD 종류 : AutoCAD
② VERSION : 2011
③ 운영 체제 : win7 64bit
④ 질문내용 및 스크린샷(이미지 및동영상)
test.xls
ww.dwg
엑셀값_도면에_뿌리기.LSP
(defun c:xx(/ rno nn cno sht range tmm db aa inpo bipo ent en) ;; made by inwind
(vl-load-com)
;;서브함수 선언 시작
(defun inex(/ bom_dir reg-path reg-list x loc)
(setq bom_dir "c:/test.xls")
(setq reg-path "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Office\\"
reg-list (vl-registry-descendents reg-path))
(mapcar '(lambda (x) (if (vl-position "Excel" (vl-registry-descendents (strcat reg-path x))) (setq loc (strcat reg-path x "file://excel//")))) reg-list)
(setq excel-path (strcat (vl-registry-read (strcat loc (car (vl-registry-descendents loc))) "Path") "Excel.exe"))
(if (not msxl-acos)
(vlax-import-type-library
:tlb-filename
excel-path
:methods-prefix
"msxl-"
:properties-prefix
"msxl-"
:constants-prefix
"msxl-"
)
)
(setq excelapp (vlax-get-or-create-object "Excel.Application"))
; (setq worksheet (vl-catch-all-apply 'vla-open (list (vlax-get-property excelapp "WorkBooks") bom_dir)))
(vlax-put excelapp "visible" 1)
(setq books (vlax-get-property excelapp 'activeworkbook))
(setq sheets (vlax-get-property books 'sheets))
)
(defun getrng(r c / c1 c2 tt)
(if (< c 27)
(setq tt (chr (+ c 64)))
(progn
(setq c1 (/ (- c 1) 26))
(setq c2 (rem (- c 1) 26))
(setq tt (strcat (chr (+ c1 64)) (chr (+ c2 65))))
)
)
(strcat tt (itoa r))
)
(defun getdata(tmdb / tdb tnn txt ttt)
(setq tnn 3)
(setq txt "")
(repeat 4
(if (nth tnn tmdb)
(progn
(setq ttt (if (numberp (nth tnn tmdb)) (rtos (nth tnn tmdb) 2) (nth tnn tmdb)))
(setq txt (strcat txt " " (chr (+ tnn 94)) "= " ttt))
)
)
(setq tnn (+ tnn 1))
)
txt
)
;;서브함수 선언 종료
(inex)
(setq rno 1 cno 2)
(setq db '())
(setq sht (vlax-get-property sheets 'item 1))
(setq range (vlax-get-property sht 'range "H1"))
(setq rpno (fix (vlax-variant-value (vlax-get-property range 'value2))))
(repeat rpno
(setq nn 0)
(setq aa '())
(repeat 7
(setq range (vlax-get-property sht 'range (getrng cno (+ rno nn))))
(setq aa (append aa (list (vlax-variant-value (vlax-get-property range 'value2)))))
(setq nn (+ nn 1))
)
(setq db (append db (list aa)))
(setq cno (+ cno 1))
)
(terpri)
(setq inpo (getpoint "삽입할 지점을 선택하세요~>>"))
(setq bipo (mapcar '(lambda (x y) (+ x y)) inpo '(0 16 0)))
(foreach tmm db
(setq bipo (mapcar '(lambda (x y) (+ x y)) bipo '(0 -16 0)))
(command "insert" "ww" bipo "" "" "")
(setq en (vlax-ename->vla-object (ssname (ssget "l") 0)))
(foreach ent (vlax-invoke en 'getattributes)
(if (= (vla-get-tagstring ent) "NO") (vla-put-textstring ent (nth 0 tmm)))
(if (= (vla-get-tagstring ent) "PI") (vla-put-textstring ent (nth 1 tmm)))
(if (= (vla-get-tagstring ent) "NN") (vla-put-textstring ent (strcat "N=" (rtos (nth 2 tmm) 2))))
(if (= (vla-get-tagstring ent) "DATA") (vla-put-textstring ent (getdata tmm)))
)
)
(if (not (vlax-object-released-p excelapp)) (vlax-release-object excelapp))
(princ)
)
설명이 부족했던것 같아서 .. 다시 질문드립니다.
엑셀에 있는수량을 cad 폼에 맞추어 불러오는 기능이고
바람안에서~ 님께서 작성해주신 lsp입니다.
회사 win xp cad2006-2010 엑셀2007 사용하고.
집 win7 64bit cad2011 엑셀2007 사용합니다.
회사에서는 실행이 되는데 집에서는 실행이 되지 않습니다.
빨간색 엑셀패치부분을 경로에 맞게 수정하면 .. 엑셀까지는 실행이 됩니다.
검토 부탁드립니다.^^
⑤ 파일첨부 (LISP/DWG) - DWG 첨부시 보다 정확한 답변을 얻을수 있습니다.
※ 유의사항
- ①말머리 : 말머리를 달아야 구분이 쉽겠죠^^
- ②Screenshot : 이해를 돕기위해 삽입요망.
- ③파일 첨부 : 상위버전에서 테스트할 파일이 아니면 가급적 하위버전으로 저장후 첨부.
해당리습/해당파일(DWG) 도 같이 첨부하여 주세요.
- ④제 목 : 질문 내용 반영(개략적인 내용), 예) 해치를 만들고 싶어요, pline을 연결할려면?
- ⑤질문글 삭제금지 : 질문후 댓글이 달린글은 삭제금지.
여러 리플러들이 소중한 시간을 내어서 고민한후 댓글을 작성한 이상 "강력조치" 토록 하겠음.
※ 정답만이 댓글은 아닙니다. 그 답이 맞던 틀리던 그건 그 댓글로서 존중되어야 합니다.
회원님들이 글을 읽었다는것과 댓글을 달았다는건 그만큼 관심을 가지고 있고 또 그 답을 해주기 위해
검색도 해보고 도움말도 보고 고민도 하는 일련의 과정을 거치면서 나오기 때문이죠.
이에 대한 고마움과 감사함을 모르는 테러행위(?)는 없었으면 합니다.