(DEFUN C:wff()
(vl-load-com)
(setq
acad (vlax-get-acad-object)
adoc (vlax-get acad ‘activedocument)
)
(vla-put-width adoc 150)
(vla-put-height adoc 108)
(command “zoom” “E”)
(setq strText (strcat (vl-string-right-trim “.DWG” (strcase (getvar “DWGNAME”)))))
(command “filedia” “0” “export” (strcat “C:\” strText “.wmf”) “all” “”)
(command “filedia” “1”)
;(command “_close” “y”)
)
수야님의 도움을 얻어 원하는걸 작성하고 있는데요.
wmf 파일로 내보낼때 화면상에 보이는 크기로 내보내게 되는데
이상하게 리습으로 작성해서 사용만 하면
이미지가 가로폭에 딱맞게 나오는데 높이가 이상합니다.
직접 명령어 창에 타이핑하면 높이가 제대로된 크기가 나옵니다.
리습으로 사용할때만 이상하게 가로폭만 맞추고 높이가 가변폭이 됩니다.(알아서계산됨)
처음에는 zoom 문제 인줄알았는데
정사각형으로 그리면 높이가 그것에 맞게 되니까 원인을 모르겠네요…
1. 리습을 한줄한줄 입력해서 사용하면 원하는 결과가 나옵니다.
2. 리습으로 이용시에는 폭만 원하는 값으로 나오고 높이값이 계속가변이 됩니다.
제가 혹시 놓친 부분이 있다면 힌트 부탁드리겠습니다. ㅠ
공유
(DEFUN C:wff()
(vl-load-com)
(setq
acad (vlax-get-acad-object)
adoc (vlax-get acad ‘activedocument)
)
(vla-put-width adoc 150)
(vla-put-height adoc 108)
(command “zoom” “E”)
(alert “dddd”)
(setq strText (strcat (vl-string-right-trim “.DWG” (strcase (getvar “DWGNAME”)))))
(command “filedia” “0” “export” (strcat “C:\” strText “.wmf”) “all” “”)
(command “filedia” “1”)
;(command “_close” “y”)
)
(command “zoom” “E”)
다음에 alert 나 getword … 등으로 로 실행을 잠시 끊어 주면 될것입니다.
도면이 크지않다면 regen 명령을 주어도 될것입니다.
delay 로는 않될것입니다. filedia 는 빼도 되지않나요…
말씀대로 해보아도 폭은 고정이지만
내보내진 WMF 파일의 높이값이 가변적인건 여전했습니다.ㅜㅡ
alert 를 zoom 전후에 놓거나 이래저래 방법을 다 해보아도 안되는군요 ;;; ㅠ
리습상에 zoom 의 고질적인 문제인건지
export를 zoom 전에 사용해서 그런건지 몰라도 문제가 좀 있네요
해결책이 없는건가…orz
재미납니다..
코드상 문제는 없지만…
활성도면의 속성을 수정 후 zoom e 를 하니..
뭔가 zoom 이란 놈이 제대로 인지를 못하네요..
그게 문제인거 같네요… zoom 이란놈…
속성을 봤는데
documnets 에서는 width 속성이 없었습니다..???
(없는데 되긴 하네요?)
(vla-put-width acad 150)
(vla-put-height acad 108)
하니 바로 되는 느낌이 드네요..
음 뭔가 width & height 함수가 정상 작동을 안하네요 근사치로 변하기는 하는데 원하는 값으로 정확하게는 변하지를 않네요 일단 달수님 한테 한번 여쭤봐야 겠군요 ㅎㅎ;;
(command “zoom” “E”)
zoom 이후여야 합니다.
(command “regen”) 아님 길이가 0인 라인 point 도 괜찮고요..
vla or entmake 가 아닌 command 명령중에 아무거나 괜찮을 겁니다.
를 명령어 사이사이에도 집어넣어보았죠.
제가 이것저것 시도도 해보지 않고 이렇게 질문을 다는 사람은 아닙니다.
심지어 zoom o(객체선택) 으로도 해봤습니다.
실례지만 실제로 해보시고 답변달아주신건지요?
크기를 제각기 다른걸로 여러번 해보세요.
wmf 를 그림판으로 열었을때 폭픽셀은 130인가로 고정이지만
높이값이 가변이라는점이 문제라는거죠..
올려주신걸로도 마찬가지로 안되었습니다.
캐드 버전 탓인가해서 2007, 2008, 2014, 2015 에서 테스트도 다해보았습니다.
일단 추가적으로 말씀해주신것처럼
포인트 찍고 지운다음에 한번 해보도록 하겠습니다.
답변은 정말 감사하지만
테스트도 안하고 답변달아주시는건 오히려 질문자한테 독입니다.
기분상하셨다면 죄송합니다. 하지만 저도 답답한 마음에 이런 글을 쓴점 이해부탁드리겠습니다.
좋은 하루되세요.
하지만 한줄한줄 리습내용을 직접 입력하면 제대로된 크기로 출력되는게 아리송합니다.
뭔가 export란 명령어를 리습으로 사용하게 되면서 백그라운드처럼 투명명령어로 동작이 되고
그에따른 예외적인 활동으로 최적 크기 상태로 잘라내어 내보내는 느낌이 드는것 같습니다.
해결책 찾기가 문제네요 ㅠ
혹시 zoom 과 유사한 vla 명령어나
export를 대체할만한 리습상으로 사용가능한 wmf 출력 방법이 있을까요?
하나 만든거 올립니다 딜레이 문제가 맞습니다 어찌 된건지 vla명령이나 entmake 명령에 의한 작업시 캐드에 regen을 실행해도 변화가 없을때가 있습니다 그럴때는
선택 객체에 대한 screensize 는 가변이어야 합니다.
객체 bounding 에 에 준하는 screensize 를 계산해서 키워야 한다는 것입니다.
물론 dpi 를 바꾸고 싶으면 객체 SCALE 을 키우고 줄이고 거기에대한 screensize 도 변합니다.
dpi 계산이 되어야 하겠죠..
위 모든것이 되었다는 가정하에 screen 에 대한 여백이 반영되지 않을때의 기준으로 답변드린 것입니다.
실제로 해보고 안해보고의 차이가 있나요 답은 한가진데….
위 답변은 저의 생각을 기준으로 한것입니다. (현제 적용중입니다.)
vla 를 이용한 wmf 를 사용해도 마찬가지였네요.
스트링 값을 받는것 같은걸로 임시적인 딜레이를 줌으로서 해결이 되다니
다행입니다.
스페이스바 2번 누르는것 정도는 제가 감안하고 써야죠
이런 질문에 관심 가져주셔서 정말 감사드립니다.
오늘도 좋은하루되세요~
당연히 가변이겠죠.
질문의 요점은 dpi 같은게 아니고
리습을 한줄한줄 실행시에는 높이가 제대로 나오는데
리습을 명령어로 해서 실행하면 높이가
리습 실행명령중 zoom이 제대로 반영되지 않은채 wmf 로 나간다는게 문제였다는거고
해당 문제는 http://www.cadtutor.net/forum/archive/index.php/t-43479.html
해외에서도 동일시 해결된 답변이 있습니다.
자꾸 동문서답하시는지는 이해할 생각이 없지만
왜 해보시지도 않고 생각만의 답변을 제시하는지 모르겠네요.
그리고 수야님의 방법으로 해결했으니 이만 글을 줄이겠습니다.
다른사람이 yehmr 님의 마지막 댓글보고 해결 못한 질문글로 착각할까봐
댓글달고 마무리 짓는거니 오해하지 마시기 바랍니다.