• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

アウトリガー サブスト

  • Thread starter Thread starter anfaloni
  • Start date Start date

anfaloni

Guest
ciao ragazzi, sto cercando di risolver questo arcano ma non ne esco.

io ho un blocco il cui nome è "pippo" e che avrà tutte le sue caratteristiche comprese le coordinate che leggo essere (10 . 0.0 0.0 0.0)

ditemi dove sbaglio perché non so dove sbattere la testa..

(setq var (car (entsel)))

seleziono il blocco e la variabile var acquisisce la stringa di proprietà del blocco.

facendo infatti: (entget a) vedo come a seguire

((-1 . <nome entità: 7f74721d360>) (0 . "insert") (330 . <nome entità: 7f7472069f0>) (5 . "583a6") (100 . "acdbentity") (67 . 0) (410 . "model") (8 . "quote") (48 . 0.5) (100 . "acdbblockreference") (66 . 1) (2 . "1") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))

vorrei adesso fare due domande:

1) ma perché e dico perché se scrivo: (subst (10 100.0 100.0 0.0) (10 0.0 0.0 0.0) var) mi da errore e non mi consente di spostarmi il blocco nella nuova coordinata?

2) perché, sapendo che il blocco si chiama pippo, devo per forza passare prima per entsel e difinire var piuttosto che definire (setq var "pippo") ?

3) perché se definisco (setq coord "100,100,0") usando command non riesco a dire a pippo di spostarsi in coord?
(command "_move" pippo coord "")

sicuramente sbaglio e probabilmente anche concettualmente, per questo chiedo ad un occhio più esperto come il vostro dove sbaglio

grazie per la disponibilità!
 
Code:
(setq var (entget (car (entsel))))
(entmod (setq var (subst (cons 10 (list 100.0 100.0)) (assoc 10 var) var)))

Code:
(setq pippo (car (entsel)))
(setq pos (cdr (assoc 10 (entget pippo))))
(setq coord (list 100.0 100.0 0.0))
(command "_move" pippo "" "_non" pos "_non" coord)
 
Code:
(setq var (entget (car (entsel))))
(entmod (setq var (subst (cons 10 (list 100.0 100.0)) (assoc 10 var) var)))

Code:
(setq pippo (car (entsel)))
(setq pos (cdr (assoc 10 (entget pippo))))
(setq coord (list 100.0 100.0 0.0))
(command "_move" pippo "" "_non" pos "_non" coord)


grazie mille gp! ma quindi devo passare per forza attraverso l'entsel anche se so il nome del blocco?
 
grazie mille gp! ma quindi devo passare per forza attraverso l'entsel anche se so il nome del blocco?
il nome del blocco per te e' pippo. per il database di autocad e' <nome entità: 7f74721d360>

3) perché se definisco (setq coord "100,100,0") usando command non riesco a dire a pippo di spostarsi in coord?
perche' devi dire
(command "_move" pippo oldcoord newcoord)

dove pippo deve contenere <nome entità: 7f74721d360> (senza il codice di gruppo (1 )
oldcoord e newcoord devono essere in formato corretto (o delle liste punti senza codice di gruppo 10, oppure anche in formato testuale come le daresti da tastiera, purche entrambe le variabili abboano lo stesso formato)

se usi command, ricorda che la sintassi corretta è (command "_move" oggetto "" oldcoord newcoord)
la doppia virgoletta rosse serva a far capire al comando move che la selezione degli oggetti da spostare è terminata
 
gp, giusta osservazione, così come...far capire quale vorrei copiare se ne ho 10 uguali..

cristallo: grazie mille per le dritte..

ma mi sapete dire perchè se usao il comando insert
(command "_.-insert" blocco coord)
dove blocco è una variabile "c:\\lore.dwg" e coord una variabile con le coordinate.
se lancio il comando mi chiede poi manualmente di inserire scala x,y,z e rotazione costirngendomi ad intervenire manualmente? c'è modo di non fargliele chiedere o bypassare questo intoppo quando inserisco un blocco via lisp?
 
quando usi la funzione command, in generale, devi passare al comando tutta l'esatta sequenza di scelte, opzioni, input che daresti da tastiera ed anche nell'ordine corretto, tenendo presente che un valore "" corrisponde ad un invio.
 
grazie!

vero, infatti se scrivo (command "_insert" blocco coord "" "" "")
funziona correttamente!
 
こんにちは、私は同様の問題を持っています、私は座標の "x" の値だけを変更したいです、そして "y" と "z" はそれらを変更しないように残します、それは lisp で行うことができますか?
 
可能で、任意の座標は、少なくともxとyのリストで構成され、あなたはxを抽出し、xを変更し、リストを再構成し、それを置き換えることができます。
 
多分これは抽出であなたを助けます。
このリストは、高度の-1000(現在の作業の近く)の床の「印刷」、3d面と3dラインの垂直ビューの投影、すべての純粋なライン。
ご覧のとおり、顔とライン3dだけxとzから抽出し、新しいzは、投影のすべての新しいデザインに共通する変数「プラン」であるため、xとyだけを使用しています。
(ps. 制御と様々な名前の比較が必要です... )



(defunのzprint)
(prompt "\nprint フロントライン: "
(setvar「cmdecho」) 0)
(setq の selez (ssget))))
(/= nil selez の場合)
(プログ)
(setq max (sslength の selez)) 容器 0)
(間) (> 最高の円錐形)
(setq en (ssname selez contasel) alist (entget en) (ssname selez contasel) alist (entget en))

(例: "3dface" (cdr(assoc 0 alist)))))
(プログ)

(setq と alist)
;;; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(setq pnta (cdr (assoc 10 ed)))))))
(setq pntb (cdr(assoc 11 ed))))))))
(setq pntc (cdr (assoc 12 ed)))))))
(setq pntd (cdr(assoc 13 ed))))))))

(setq プラン -1000)

(setq pnta (list (car pnta) (caddr pnta) プラン)))
(setq pntb (list (car pntb) (caddr pntb) プラン))
(setq pntc (car pntc) (caddr pntc) プラン))
(setq pntd (list (car pntd) (caddr pntd) プラン))


(例: pntb ) (progn) (コマンド "_line" pntb ) ) )
(例: pntb pntc) (progn) (コマンド "_line" pntc"))
(例: pntc pntd) (progn) (コマンド "_line" pntd")))
(例: pntd pnta (progn) (コマンド "_line" pntd pnta")))

) ; 近いprogn
)

(例えば(= "3dline" (cdr(assoc 0 alist))))))) (= "line" (cdr(assoc 0 alist)))))))))))
(プログ)
(setq pnta (cdr(assoc 10 alist))) pntb (cdr(assoc 11 alist))))
(setq プラン -1000)
(setq pnta (list (car pnta) (caddr pnta) プラン)))
(setq pntb (list (car pntb) (caddr pntb) プラン))
(コマンド "_line" pntb ")
) ; 終わりのprogn
) ; ラインが
(setqのcontasel (+ 1会計士)))
), 閉じる
) ; 近いprogn
)
(setvar「cmdecho」) 1) 1
(prompt "\nready")
), クローズドファンクター
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top