• 이 포럼은 이탈리아 디자인 커뮤니티인 www.cad3d.it/forum1 의 기계 생성 번역입니다. 몇 가지 용어가 올바르게 번역되지 않았습니다.

LISP의 좌표표

  • Thread starter Thread starter Cristallo
  • Start date Start date

Cristallo

Guest
그림에서 나는 여러 레이아웃을 가지고
(setq layouts (layoutlist)로 목록을 얻습니다.
나는 (setq 레이아웃 (acad_strlsort 레이아웃)에 의해 그들을 주문)

그때마다 나는 뷰 포트의 정보를 얻기 위해 시도 (나는 각 레이아웃에 대해 1 만있다) - 우리는 내가 레이아웃의 전망 포트를 찾습니다 1002
(setq p (ssget "x") (cons 0 "viewport") (cons 410 "1002"))))))
(setq view0 (문자 0))

특정 레이아웃에 Viewport entity 목록을 얻고보기의 극단을 파악하려고하지만, 나는 할 수 없습니다. I know that group 10 is the center of viewport, 하지만 난 각도를 필요로 (디스플레이 상자 이해), 모델의 뷰 포트의 적성을 선택할 수 있습니다.
어떤 gurus가 말해 줄 수 있습니까?
 
uno tra i metodi se la topra è rettangolare :

selezionare 창 nel 레이아웃
(setq flay (vlax-ename->vla-object))를 설정하십시오.

trovare il 경계 상자 della 최고급 (p1 e p2)
(vla-getboundingbox flay 'p1 * 'p2*')
(setq p1 (vlax-safearray->list p1 *))
(setq p2 (vlax-safearray->list p2*))
(setq p1 (리스트 (자동차 p1) (캐스터 p1))
(setq p2 (리스트 (자동차 p2) (캐스터 p2))

trasforma le 좌표 다 레이아웃 a modello
(setq p1 (변환 p1 3 2)
(setq p2 (변환 p2 3 2))
 
oppure의
(vlax-get-property vlaobj "center") 중앙 집중식
(vlax-get-property vlaobj "폭") larghezza
(vlax-get-property vlaobj "높이") altezza
 
또는
ent가 viewport entities의 목록이라면
(cdr (assoc 10 ent) 중앙 지점
(cdr (assoc 40 ent) 폭
(cdr (assoc 41 ent) 높이
 
첫 번째 테스트:
rpor의 방법으로, belly를 통해, 폭과 고도 나는 gp의 경계 상자의 동일한 좌표에 도착하지만, 나는 거기에 도착 3-4 단계를 수행해야, 그래서 나는 gp의 솔루션을 훨씬 더 즉시 선호.

내가 찾는 큰 문제는 trans에
1) 현재 디스플레이가 레이아웃에 있는 경우에만 값을 반환합니다. 모델이 nil을 반환하는 경우.
2) 대신 trans와 그 사이에 점 사이의 번역이 정확할 것입니다. 나는 경계 상자의 두 점 사이 선 (모델에서)을 그리는 경우에, 선은 완벽하게 창의 크기를 커버하지만 tot를 번역 (내가 묶는 것을 이해하지 않는).

나는 두 개의 codics (gp 용액 - rpor 용액)의 파편을 첨부하고 난 내 어려움을 확인할 수 있도록 dwg 파일의 추출.
Code:
 (setq 레이아웃 (layoutlist))
(setq 레이아웃 (acad_strlsort 레이아웃))
(setq 광고 (getvar "dwgprefix"))
(setq layfol (strcat 광고 "레이아웃"))
(vl-mkdir layfol)의

(setq layoutnumber (길이 레이아웃))
(setq 조사 0)
(setq 레이아웃 (0 레이아웃))
(setq vp (ssget "x" (리스트 0 "viewport"))))))
;;;;**************************
(setq flay (vlax-ename->vla-object (이름 vp 0)))))
(vla-getboundingbox flay 'p1 * 'p2*)
(setq p1 (vlax-safearray->list p1 *))
(setq p2 (vlax-safearray->list p2*))
(setq p3 (리스트 (자동차 p1) (캐스터 p1)))
(setq p4 (리스트 (자동차 p2) (캐스터 p2))
(setq p5 (변환 p3 2))
(setq p6 (변환 p4 3 2))
;;;;;**** 좋은 codice gp***********
(setq 이전 모드 (getvar "osmode")))
(setvar "osmode") 0)
( "_line" p5 p6 "")

Code:
;; *** 주사위 rpor*********** ***
(setq 센트로 (vlax-safearray->list))))
(setq larghezza (vlax-get-property flay "폭"))
(setq altezza (vlax-get-property flay "높이"))
(setq p01x (- (nth 0 센트로) (/ larghezza 2)))
(setq p01y (- (nth 1 센트로) (/altezza 2)))
(setq p01 (목록 p01x p01y (제 2 센트로)))
;;;****codice rpor*****************
 

Attachments

Code:
 (setq 레이아웃 (layoutlist))
(setq 레이아웃 (acad_strlsort 레이아웃))
(setq 광고 (getvar "dwgprefix"))
(setq layfol (strcat 광고 "레이아웃"))
(vl-mkdir layfol)의

(setq layoutnumber (길이 레이아웃))
(setq 조사 0)
(setq 레이아웃 (0 레이아웃))
(setq vp (ssget "x" (리스트 0 "viewport"))))))
(setvar "clayout" 레이아웃) ;<======= rendi corrente il 레이아웃
;;;;**************************
(setq flay (vlax-ename->vla-object (이름 vp 0)))))
(vla-getboundingbox flay 'p1 * 'p2*)
(setq p1 (vlax-safearray->list p1 *))
(setq p2 (vlax-safearray->list p2*))
(setq p3 (리스트 (자동차 p1) (캐스터 p1)))
(setq p4 (리스트 (자동차 p2) (캐스터 p2))
(setq p5 (변환 p3 2))
(setq p6 (변환 p4 3 2))
;;;;;**** 좋은 codice gp***********
(setvar "clayout" "model");<===== rendi corrente 모델
(setq 이전 모드 (getvar "osmode")))
(setvar "osmode") 0)
( "_line" p5 p6 "")
 
Last edited:
내가 찾는 큰 문제는 trans에
1) 현재 디스플레이가 레이아웃에 있는 경우에만 값을 반환합니다. 모델이 nil을 반환하는 경우.
코드 3은 종이 공간의 dcs를 나타냅니다. 레이아웃에없는 경우 좌표를 계산할 수 없습니다.
 
코드 3은 종이 공간의 dcs를 나타냅니다. 레이아웃에없는 경우 좌표를 계산할 수 없습니다.
나는 이것을 이해하지만, 나는 종이 공간에서 그를 옮길 때, 그는 정확한 것이 아니라 저의 값을 반환. 950 개의 번역 단위가 있습니다 (점 모두 동일하게), 내가 식별 할 수없는 경우.
정확한 간격은 이것입니다:
델타 x = 920.4609, 델타 y = -258.0204, 델타 z = 0.0000
 
Last edited:
정확한 간격은 이것입니다:
델타 x = 920.4609, 델타 y = -258.0204, 델타 z = 0.0000
나는 당신의 dwg에이 문제를 발견했습니다, 내 부모 중 하나에서 나는 그것을 복제 할 수 없습니다 ... : 보증 :
 
viewport 목록에는 하위 목록이 있습니다 (17 920.46 -258.024 30.4836) 당신의 비계인, 왜 요구하지 않습니다, 나는 결코 일어났습니다, 계산 된 좌표에 가치를 요약하고 모든 것을 수정합니다.
dwg의 복사 / 붙여 넣기 문제 재창조, 새로운 dwg 만들기, (만 모델)를 붙여 넣기 및 뷰 포트 삽입, 문제는 사라집니다.
견적 요청
이름 *
 
sublist 17는 viewport 객체의 .target 속성과 동일합니다.
x y z는 p5와 p6 점에 관계없이 값입니다.
 
sublist 17는 viewport 객체의 .target 속성과 동일합니다.
x y z는 p5와 p6 점에 관계없이 값입니다.
완벽한 rpor.
그룹 17은 autocad의 대상 변수의 값입니다. 변수 읽기 전용, 0의 수단으로
Code:
(fun c:reset_target () (command "_.dview" "" "_po" '(0 0 0) '(0 0 1) "_x")
모든 경우에 당신의 방법은 조정을 추가해서 작동합니다.
좌표에 관계없이 합계하는 방법은 목표 값이 설정되지 않을 때 어쨌든 작동하지만, 그룹은 뷰포트 목록에서 항상 존재하는 것 같습니다.
 
나는 도움이 될 수 있다면 모른다, 나는 코드를 참조하기 때문에 나는 오랫동안 전에 썼다, 그것은 lisp가 아니라, 나는 그룹 코드를보고 dxf 파서에 내 지적 문제를 해결 알고 71.
당신이 그것을 찾을 수없는 경우, 또는 나는 그것을 잘 기억하지 않습니다, 그것은 0입니다, 전망은 관점이 아닙니다, 그래서 나는 단지 객체의 확장에 WP와 TP를 가지고.
Code:
 동안 s1$<>"endtab"
s$=dxff.readline:s1$=dxff.readline
if int(val(s$))=16 다음 wpx=val(s1$)
if int(val(s$))=26 다음 wpy=val(s1$)
if int(val(s$))=36 다음 wpz=val(s1$)
if int(val(s$))=17 다음 tpx=val(s1$)
if int(val(s$))=27 다음 tpy=val(s1$)
if int(val(s$))=37 다음 tpz=val(s1$)
if int(val(s$))=71, orto=val(s1$)
주 메뉴
 
당신은 알고, 사람, 나는 진화에 대해 당신을 보여줄 것입니다.
많은 테이블이있는 단일 파일에서 습관 / 불편 작업 (마지막 사람이 46), 각 테이블에 대한 레이아웃을 만드는.
이것은 물었을 때, 나는 출판에 의해 모든 도면을 몰아, 매우 빨리 그리고 내가 모든 의존 테이블을 업데이트하는 훨씬 쉽게 어딘가로 변경하기 때문에.
일부 고객이 46 테이블과 파일을 원하지 않기 때문에, 1 테이블에서 46 파일, 나는 그것의 constituent 레이아웃의 파일을 수출하는 데 필요한.
layoutexport, 레이아웃을 수출하지만, 모델 공간에서만 (당신은 레이아웃을 잃습니다) 그리고 특히 레이아웃에 설정 표시 세트로 내보내기 (당신이 배치에서 설정 한 경우 "representing print styles" 당신은 검은 색과 흰색 모델을 찾을 수 있습니다.
그리고 위의 모든 그것은 단일 레이아웃.
나는 layoutexport 다중 인 다른 lisp (type lxa)를 시도했지만 exportlayout (obviously)의 동일한 문제에서 고통
나는 layoutstodwgs를 시도하지만, 케이스, 나는 전체 모델을 복제, 그래서 13mbyte 파일은 나에게 46 13mbyte 파일이되었다

그리고 내가 그것을 썼다, gp의 도움 (큰 마스터)과 rpor66 (다른 짐승의 lisp).
그것은 조금 거친, 약간 과실 통제입니다, 그러나 당신이 필요로 하는 무엇을
각 레이아웃을 별도의 파일로 내보내기, 레이아웃 창에 포함 된 유일한 엔티티티를 유지하고, 종이 공간에서 관련된 엔티티티를 포함한 레이아웃 자체.

Code:
(defun reset_var()
(setq 레이아웃 nil ad nil layfol nil oldrgnmode nil layoutnumber nil count nil)
(setq vp nil flay nil p1 nil p2 nil p3 nil p4 nil p5 nil p6 nil p7 nil p8 nil)
(setq target_vp nil oldosmode nil todel nil count1 nil layname nil file_name nil)에 대한
(setq pspace_ent nil oldmaxvp nil old_thumb nil)의 경우
·


;;;; subfolder "layouts"에 별도의 파일에 모든 레이아웃을 수출
;;; 각 파일에 대 한 모델 엔티티티티 및 레이아웃을 유지 (관계 용지 공간에)
;;; 배치는 1개의 단 하나 vieport가, 배치가 다수 viewport, probram 틈이 있는 경우에 있어야 합니다.
;;; 탱크 gp와 rpor66의 cad3d.it 내 처리량을 해결

(defun c:layexport9 ()

(vl 로드-com)


(setq oldmaxvp (getvar "maxactvp")))
(setq old_thumb (getvar "updatethumbnail")))
(setvar "clayout""모델")


(setq 레이아웃 (layoutlist))
(setq 레이아웃 (acad_strlsort 레이아웃))
(setq 광고 (getvar "dwgprefix"))
(setq layfol (strcat 광고 "레이아웃"))

(findfile layfol의 경우)
(진료)
(alert "\n la directory di output e' gia' esistente
\nla procedura potrebbe sovrascrivere 파일 giã esistenti
이 produrre risultati inaspettati.
\nil programma sara' terminato e tutte le variabili saranno azzerate")
(reset_var) (으)로
(필수)
·
·



(vl-mkdir layfol)의
(setq 이전 무시 모드 (getvar "regenmode")))
(setvar "regenmode") 0)

(setq layoutnumber (길이 레이아웃))
(setq 조사 0)
(setq pspace_ent (문자 "x" '(67 . 1))))))



(각각 레이아웃 레이아웃
(setvar "maxactvp") 2) 명세
(setvar "updatethumbnail" 0)
(setq 레이아웃)
(setq vp (ssget "x" (리스트 0 "viewport"))))))

(이 경우 (> (sslength vp) 2) 명세
(진료)
(setq vpnumerr (strcat "nel layou " layout "ci sono piu' di una viewport) (설정)
\nil programma potrebbe fornire risultati inaspettati e sara' terminato.
\nricordarsi di eliminare 라 디렉토리 giã creata altrimenti la procedura fallirã nuovamente."))
(리뷰 VPNumerr)
(reset_var) (으)로
(필수)
·
·

(setvar "clayout" layout);;<----- cambia il layout rendendo corrente quello 에 참
;;;;****inizio 인덱스 사이트맵
(setq flay (vlax-ename->vla-object (이름 vp 0)))))
(vla-getboundingbox flay 'p1 * 'p2*)
(setq p1 (vlax-safearray->list p1 *))
(setq p2 (vlax-safearray->list p2*))
(setq p3 (리스트 (자동차 p1) (캐스터 p1)))
(setq p4 (리스트 (자동차 p2) (캐스터 p2))
(setq p5 (변환 p1 3 2))
(setq p6 (변환 p2 3 2))

;;<------- inizio suggerimento rpor는
;;;; somma il valore di 대상 alle 좌표 viewport
(if (assoc '17 (문자명 vp 0)))
;;se esiste il valore di 대상
(진료)
(setq target_vp (cdr (assoc '17 (문자 vp 0))))))))
(setq p7 (list (+ (nth 0 p5) (nth 0 target_vp)) (+ (nth 1 p5) (nth 1 target_vp)) 0.00 )
(setq p8 (list (+ (nth 0 p6) (nth 0 target_vp)) (+ (nth 1 p6) (nth 1 target_vp)) 0.00 )
);;<--------chiusura progn
);;<--------se esiste gruppo 17 nell'entita 전망port

(setvar "clayout""모델")
;;;;;**** 좋은 codice gp***********
(setq 이전 모드 (getvar "osmode")))
(setvar "osmode") 0)

(command "_.select" "_crossing" p7 "")

(command "._undo" "_begin")
(command "_erase" "_all" "_remove" "_previous" "_remove" pspace_ent "")

(세트 1 -1)

(repeat 레이아웃 번호

(setq 카운트1 (+ count1 1))
(setq layname (nth count1 레이아웃)
( if (/= layname layout) (command "_layout" "_delete" layname));;<chiusura if


);;<- chiusura 반복

(command "._undo" "_end")

(setq file_name (strcat layfol "\" 레이아웃))
( "-purge" "_all" "_no")
( "-purge" "_all" "_no")
(setvar "maxactvp" oldmaxvp)
(setvar "updatethumbnail"이전_엄지)

(command "_saveas" "파일_이름)
(command "_undo" "_back" "_y")

(setvar "clayout""모델")

( "_erase" "_crossing" p7 "")
( "-purge" "_all" "_no")

(setq 조사 (+ 조사 1))

);;;<--> chiusura foreach 레이아웃

(setvar "regenmode"이전)

);;<-------chiusura defun

(alert "\n estrae tutti i layout di un dwg in file separati in una sottocartella layouts 델 dwg.
\nfunziona con layout che abbiano una sola viewport, ed esporta, ogni layout, sia la parte modello che il relativo layout con le entita' appartenenti al paper space di quel layout.
\n\nusare layexport9 lanciare 당")
내가 아직도 해결해야 유일한 부분은 물리적으로 외부 참조 (xrif 및 이미지) 폴더에서 새로운 하위 폴더 "layouts"에 의존하므로 개별 레이아웃의 파일을 열 때 누락 된 참조 통지를 제공하지 않습니다.

나는 xref dwg 목록을 얻을 수 있습니다 :
Code:
;;; xref blocchi를 닫는 주사위

(setq *acad-object*) (vlax-get-acad-object)) (세트)
(setq *active-doc*) (vla-get-activedocument *acad-object*))를 설치하십시오.
(setq * 블록 * (vla-get-blocks *active-doc*))))
(vlax-for n * 블록 *
(eq (vla-get-isxref n) : vlax-true 경우)
(임시)
(setq pippo (vla-get-path n)))
(setq pippo (findfile pippo))를 설치하십시오.
·
·
·

;;; xref blocchi를 닫는 주사위
이미지 파일 이름:
Code:
;;; xref immagini를 짜는 codice
(defun imgfile ( / acad_image_dict )

(vl-catch-all-apply)에 대해
소다 ( )
(setq acad_image_dict)에 대해
(브라운)
(vla-get 사전
(vla-get-activedocument)에 대해
(vlax-get-acad-object)에 대 한
·
·
"acad_image_dict"를 클릭하십시오.
·
·
·
·
(setq lista (리스트)
(acad_image_dict 인 경우)
(vlax-for 항목 acad_image_dict
다운로드
(vl-princ-to-string)에 대 한
(주)
(아침 1
(문자)
(vlax-vla-object->이름 항목)
·
·
·
·
·
·
그러나 나는 autocad 포탄 가동에 붙어 있었습니다. 나는 20 년 동안 그들을 사용하지 않았다.

마스터의 또 다른 돌격? :
 
한편, 비동기 / 비동기 쉘의 사용을 허용하는이 파일을 가져 와서 Xcopy 명령 만 매개 변수 파일 복사 dirdestination을 사용하여 프로그램 "청소"을 관리 할 수 있습니다.
문제가 있다면, 나는 여기.
이름 *
 

Attachments

Forum statistics

Threads
58,191
Messages
495,938
Members
103,104
Latest member
FabioFrontini
이 포럼은 이탈리아 디자인 커뮤니티인 www.cad3d.it/forum1 의 기계 생성 번역입니다. 몇 가지 용어가 올바르게 번역되지 않았습니다.

Members online

No members online now.
Back
Top