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

描画のブロック内の変数インスユニットを0個に持って来る

  • Thread starter Thread starter x11start
  • Start date Start date

x11start

Guest
la variabile insunits se lasciata al valore 0, consente di importare blocchi fra i vari disegni mantenendo la scala del blocco stesso, la scala con cui è stato creato.
se invece se nel disegno la si imposta ad un valore diverso (es. 4 che rappresenta i mm), e si crea un blocco, quando quest'ultimo viene inserito in un altro disegno in cui la variabile è posta ad un valore diverso.... il blocco viene scalato.
sicuramente la cosa è utilissima se i lisp sono stati creati tenendone conto, viceversa la cosa diventa fastidiosa poichè i blocchi richiamati risultano scalati.

mi chiedo se fosse possibile creare un lisp in grado di porre a 0 .... o comunque di variare tutti i blocchi di un disegno contemporaneamente, senza dover esplodere e ricreare i blocchi.

suppongo si tratti di un codice di gruppo nascosto chissà dove....

grazie per l'aiuto
 
insunits è una variabile memorizzata nel disegno, non nel blocco, per cui mai la troverai tra i gruppi del blocco.
via lisp, ottieni tale veriabile mediante (getvar) e la setti tramite (setvar).
il fatto è che se crei un blocco esterno (un dwg che richiami da un'altro dwg) ovviamente il dwg del blocco ha la sua variabile memorizzata all'interno del file, che non è una variabile legata al singolo blocco, ma al singolo file.
e' il valore della variabile (del disegno) salvata al momento in cui hai creato il blocco (come dwg esterno), non so se mi sono spiegato.
dovresti aprire tutti i dwg dei blocchi che hai, settare insunits a zero e salvarli, tutto li.
 
però se guardi le proprietà all'interno del blocco c'è quella delle unità che è modificabile
 
io non mi ero mai posto il problema poichè in "millemila" anni di carriera (!) i miei blocchi li avevo sempre importati fra i vari disegni mantenendone la scala.
proprio adesso ho provato a creare un quadrato 100x100 all'interno di un disegno in cuo ho posto insunits = 4, poi ne ho fatto un blocco.; l'ho selezionato e copiato con ctrl+c.
sono entrato in un altro dwg in cui la variabile è posta a 0, ed ho incollato il blocco.

il blocco incollato ha mantenuto la dimensione 100x100.

ho fatto la medesima operazione nella direzione opposta... ed anche in questo caso la scala no è variata...

a questo punto non capisco perchè gli altri blocchi si scalino....
 
per sapere il valore di insunits, o meglio il valore delle unita' di un blocco:
(vla-get-insunits (vlax-ename->vla-object (car (entsel))))
restituisce "millimetri", "centimetri" o "metri"

per sapere il rapporto di scala tra l'unita' del blocco e insunits del dwg
(vla-get-insunitsfactor (vlax-ename->vla-object (car (entsel))))
restituisce ad es. 0.01 se il blocco importato è in centimetri e insunits = 6 (metri)

questo valore serve per sapere di quanto scalare il blocco per rapportarlo al disegno in cui è stato importato, dopo di che si può assegnare a tutti i blocchi il valore corrente di insunits con:
(vlax-for blk (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
(vla-put-units blk (getvar 'insunits))
)


dovendo quindi trattare tutti blocchi del dwg bisognerebbe sapere come sono stati inseriti, ovvero scalati per uniformarli col resto del disegno o senza variare la scala originaria?
 
grazie a tutti .. e grazie a gp! non mi resta che creare una sub che passa in rassegna i blocchi interessati, prima di inserirli nel disegno.
 
quindi sostanzialmente, credo che mi limiterò a fare in modo che i nuovi blocchi inseriti divengano nella scala giusta.... evitando di "forzare" la scala interna di ognuno.
 
gp のヒントを適用して、この lisp を作成しました。これにより、現在使用している全てのブロックを描画、インスユニットの現在の値に割り当てることができます。
お問い合わせ お問い合わせ
ユニットコマンドの手段によって、メーターで作業するように設定し、センチメートルで作成されたブロックを差し込み、スケール1(すべての軸のために)の値で入力すると、実際にはブロックは100回スケールされます:これらのインサートがリスペスを介して起こる場合、非常に不快なもの。

よく: insunit.lsp を起動すると、描画中に存在する全てのブロックがメーター(または現在使用している値)に変換されるので、libs コマンドを起動する問題はなく、そのブロックを差し込みます(すでに描画にロードされている限り)。

しかし、私のアドバイスは、ブロックをより「ユニバーサル」にする0(ユニットなし)にインスユニット変数を設定することです。

とにかく、gpのヒントのおかげで、階段の問題を持っていないためにすべてのブロックを爆発し、再作成する必要があると考える必要はありません。

混乱しない:
insunits-- はユニットコマンドで変更できるシステム変数です。

insunit ------> 私はこのメッセージに付け、ブロックを均一にするために役立つlipspです
 

Attachments

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