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

重量計算の印刷

  • Thread starter Thread starter fabang
  • Start date Start date

fabang

Guest
vorrei sapere se con autocad lt si puo' calcolare il peso di un determinato pezzo penso di no
inoltre vorrei sapere se in circolazione ci siano esempi molto pratici per capire meglio il comando xrif

grazie

ciao ragazzi!!! questa è la mia prima domanda al forum.
sono riuscito a calcolare il peso di un solido tramite un programma
lisp, clicco sul solido e mi restituisce il peso (nella fattispecie peso specifico del ferro). la mia domanda è questa: avrei la necessita che il peso mi venga restituito sotto
forma di testo in una specifica area del disegno. eviterei di appuntare il peso in un foglio e poi inserirlo nel diseno con il comando testo! mi viene in mente una specie di blocco con attributo che automaticamente clicando il solido mi scriva il peso nel disegno, ma come si fa???? spero di essere stato chiaro!! grazie
 
ciao ragazzi!!! questa è la mia prima domanda al forum.
sono riuscito a calcolare il peso di un solido tramite un programma
lisp, clicco sul solido e mi restituisce il peso (nella fattispecie peso specifico del ferro). la mia domanda è questa: avrei la necessita che il peso mi venga restituito sotto
forma di testo in una specifica area del disegno. eviterei di appuntare il peso in un foglio e poi inserirlo nel diseno con il comando testo! mi viene in mente una specie di blocco con attributo che automaticamente clicando il solido mi scriva il peso nel disegno, ma come si fa???? spero di essere stato chiaro!! grazie

forse sarebbe meglio se allegassi il lisp, oppure inserire il link di dove lo hai trovato. magari qualcuno può eventualmente modificarlo.
 
...eccolo questo è il lisp, che ho travato!!!
il mio scopo è quello di portare il risultato ottenuto (volume) in
un txt nel disegno!! help

(defun c:ale_getweight ( / entobj volval wspval)
(vl-load-com)
(if (setq entobj (ale_entselfilter "seleziona un solido" '((0 .
"3dsolid"))))
(progn
(setq
entobj (ale_vlax-ename>vla-object entobj)
volval (vla-get-volume entobj)
wspval (getreal "\npeso specifico: ")
)
(if wspval
(princ
(strcat
"\nvolume: " (rtos volval 2 1)
" - peso: " (rtos (* volval wspval) 2 1)
)
)
)
)
)
(princ)
)
;
; copyright ©2005 - marc'antonio alessi, italy - all rights reserved
; http://xoomer.virgilio.it/alessi
;
; function: ale_entselfilter
;
; version 1.00 - 22/02/2005
;
; description:
; ssget for one entity with filter list
;
; arguments:
; prmstr = user prompt [STR]
; fltlst = ssget filter list

  • ;
    ; example:
    ; (ale_entselfilter "select attibuted block" '((0 . "insert") (66 . 1)))
    ;
    ; return values:
    ; [ENAME] entity name
    ; nil if user press 'return' or 'space'
    ;
    (defun ale_entselfilter (prmstr fltlst / flgslt entnam)
    (princ "\n_ ")
    (prompt (setq prmstr (strcat "\n" prmstr ": ")))
    (if
    (while (not flgslt)
    (if (setq entnam (ssget "_:e:s" fltlst))
    (not (setq flgslt t))
    (if (= 52 (getvar "errno"))
    (setq flgslt t)
    (prompt (strcat "\nnessun oggetto selezionato o valido,
    riprova!" prmstr))
    )
    )
    )
    (not (princ "\ncomando annullato. "))
    (ssname entnam 0)
    )
    )
    ;
    ; function: ale_vlax-ename>vla-object
    ;
    ; version 1.00 - 22/02/2005
    ;
    ; description:
    ; validate input object
    ;
    ; arguments:
    ; entobj = [VLA-OBJECT] or [ENAME]
    ;
    ; return values:
    ; [VLA-OBJECT] if valid input object
    ; nil otherwise
    ;
    (defun ale_vlax-ename>vla-object (entobj)
    (cond
    ( (= (type entobj) 'vla-object) entobj )
    ( (= (type entobj) 'ename) (setq entobj (vlax-ename->vla-object
    entobj)) )
    (t (prompt "\ntipo di oggetto non valido! ") )
    )
    )
    ;
    (princ)
 
la forma più semplice, con stile, altezza testo e angolo correnti:


(defun c:ale_getweight ( / entobj volval wspval)
(vl-load-com)
(if (setq entobj (ale_entselfilter "seleziona un solido" '((0 .
"3dsolid"))))
(progn
(setq
entobj (ale_vlax-ename>vla-object entobj)
volval (vla-get-volume entobj)
wspval (getreal "\npeso specifico: ")
)
(if wspval
(princ
(strcat
"\nvolume: " (rtos volval 2 1)
" - peso: " (rtos (* volval wspval) 2 1)
)
)
)
)
)

(setq vol (rtos volval 2 1)) questa stringa per scrivere solo il valore
(setq vol (strcat "volume " (rtos volval 2 1))) questa stringa per scrivere volume + valore
(prompt "\npunto d'inserimento del testo (volume) ")
(command "_text" pause "" "" vol)


(princ)
)
 
....mi da questo mess.
command: ; error: malformed list on input

le stringhe che mi hai dato fanno parte dell'intero lisp?


la forma più semplice, con stile, altezza testo e angolo correnti:


(defun c:ale_getweight ( / entobj volval wspval)
(vl-load-com)
(if (setq entobj (ale_entselfilter "seleziona un solido" '((0 .
"3dsolid"))))
(progn
(setq
entobj (ale_vlax-ename>vla-object entobj)
volval (vla-get-volume entobj)
wspval (getreal "\npeso specifico: ")
)
(if wspval
(princ
(strcat
"\nvolume: " (rtos volval 2 1)
" - peso: " (rtos (* volval wspval) 2 1)
)
)
)
)
)

(setq vol (rtos volval 2 1)) questa stringa per scrivere solo il valore
(setq vol (strcat "volume " (rtos volval 2 1))) questa stringa per scrivere volume + valore
(prompt "\npunto d'inserimento del testo (volume) ")
(command "_text" pause "" "" vol)


(princ)
)
 
ho postato solo la parte da integrare, il lisp va mantenuto intero come l'hai postato originariamente.
 
potresti postare l'intero lisp con la tua modifica???
io faccio errore di sintassi!!
grazie
 
o incolli questa stringa:
(setq vol (rtos volval 2 1)) questa stringa per scrivere solo il valore

o incolli questa:
(setq vol (strcat "volume " (rtos volval 2 1))) questa stringa per scrivere volume + valore


non incollare la parte in blu, l'avevo inserita solo per darti un'indicazione.
 
grazie!!! ci stiamo avvicinado al risultato finale
anche se continuo ad avere un mess. poco carino
command: ; error: bad argument type: file "0.41"
vediamo se riusciamo a toglierlo.

per intanto posto l'intero lisp, ulteriolmente modificato
e adattato alle mie esigenze. sono sicuro possa ritornare
ad un po di gente!!
eccolo

: questo lisp restituisce il volume in litri di qualsiasi "3dsolid"
: ricordate che il solido deve essere disegnato in millimetri.
: al prompt dei comandi digitare: litro
:
(defun ale_vlax-ename>vla-object (entobj)
(cond
( (= (type entobj) 'vla-object) entobj )
( (= (type entobj) 'ename) (setq entobj (vlax-ename->vla-object
entobj)) )
(t (prompt "\ntipo di oggetto non valido! ") )
)
)
(defun c:litro ( / countr selset entnam entobj volval wspval)
(vl-load-com)
(if
(setq selset
(ale_ssgetfilter "seleziona uno o più solidi" '((0 . "3dsolid")))
)
(progn
(setq
wspval 7.85
volval 0.0
countr 0
)
(while (setq entnam (ssname selset 0))
(setq
entobj (ale_vlax-ename>vla-object entnam)
volval (+ (vla-get-volume entobj) volval)
countr (1+ countr)
)
(ssdel entnam selset)
)
(if wspval
(princ
(strcat
)
(setq vol (rtos (* volval 0.000001) 2 2))
(command "_text" pause "" "" vol)
)
)
(vlax-release-object entobj)
)
)
(princ)
)
(defun ale_ssgetfilter (prmstr fltlst / flgslt selset)
(princ "\n_ ")
(prompt (setq prmstr (strcat "\n" prmstr ": ")))
(if
(while (not flgslt)
(if (setq selset (ssget fltlst))
(not (setq flgslt t))
(if (= 52 (getvar "errno"))
(setq flgslt t)
(prompt
(strcat
"\nnessun oggetto selezionato o valido, riprova!" prmstr
)
)
)
)
)
(not (princ "\ncomando annullato. "))
selset
)
)
 
ti dico la mia:

1) perchè non hai mantenuto la richiesta di "punto d'inserimento del testo"? chi utilizza il lisp potrebbe non sapere cosa fare dopo la selezione dei solidi.

2) mi sfugge il motivo per cui restituire il volume in litri e disegnare in millimetri, non sarebbe meglio restituire il volume riferito all'unità che ognuno imposta per il proprio lavoro?
chi disegna in millimetri avrà il volume in mm³, chi disegna in metri avrà il volume in m³, ecc.
però magari dico una fesseria perchè la maggior parte dei potenziali utilizzatori del lisp ha l'esigenza della restituzione in litri (se hai fatto così un motivo ci sarà).

comunque....:4425:
 
...innanzitutto grazie mille g.p. per la dritta!!!
senza il tuo supporto non chiudevo il lisp!
mi fa piacere rispondere ai tuoi quesiti

1) dopo aver selezionato il solido la richiesta finale è: specify start point of text or ....io utilizzo autocad in inglese, quindi sono abituato a questo tipo di mess.

2)..il volume in litri è il solido in mm., si tratta esclusivamente di una esigenza personale, sono un disegnatore meccanico quindi capirai!

cmq il lisp può essere migliorato e adattato alle esigenze di ciascuno! per quanto riguarda i litri o m3 basta ridurre qualche 0 a l'unico valore 0.000001!!!:)

grazie ancora g.p per il supporto
 
..mi sembra doveroso postare un lisp più generico
che calcoli il peso e il volume di un solido 3d, con la richiesta del peso specifico!

ciao

; version 1.00 - 06/11/2008 - modificato by fabrizio
; al prompt dei comandi digitare: vol
; questo lisp calcola il volume in m³ e il peso in kg
; di un 3dsolid, richiede il peso specifico (es. ferro 7.85 ecc...)!!
; buon lavoro a tutti
;
(defun ale_vlax-ename>vla-object (entobj)
(cond
( (= (type entobj) 'vla-object) entobj )
( (= (type entobj) 'ename) (setq entobj (vlax-ename->vla-object
entobj)) )
(t (prompt "\ntipo di oggetto non valido! ") )
)
)
(defun c:vol ( / countr selset entnam entobj volval wspval)
(vl-load-com)
(if
(setq selset
(ale_ssgetfilter "seleziona uno o più solidi" '((0 . "3dsolid")))
)
(progn
(setq
wspval (getreal "\npeso specifico: ")
volval 0.0
countr 0
)
(while (setq entnam (ssname selset 0))
(setq
entobj (ale_vlax-ename>vla-object entnam)
volval (+ (vla-get-volume entobj) volval)
countr (1+ countr)
)
(ssdel entnam selset)
)
(if wspval
(princ
(strcat
"\n" (itoa countr) " solidi > volume m³: " (rtos (* volval 0.000000001) 2 3)
" - peso kg: " (rtos (* volval wspval 0.000001) 2 2)
)
)
)
(vlax-release-object entobj)
)
)
(princ)
)
(defun ale_ssgetfilter (prmstr fltlst / flgslt selset)
(princ "\n_ ")
(prompt (setq prmstr (strcat "\n" prmstr ": ")))
(if
(while (not flgslt)
(if (setq selset (ssget fltlst))
(not (setq flgslt t))
(if (= 52 (getvar "errno"))
(setq flgslt t)
(prompt
(strcat
"\nnessun oggetto selezionato o valido, riprova!" prmstr
)
)
)
)
)
(not (princ "\ncomando annullato. "))
selset
)
)
 

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