Inserire comando perimetro moltiplicato per un valore predefinito

Yebisu

Utente Junior
Professione: Geometra
Software: inventor ,solid works, autocad zwcad arcview archicad sketchup
Regione: emilia romagna
Buongiorno ,
ho già top dove mi da con un comando VBA il perimetro e me lo inserisce nel disegno,
vorrei aggiungerci perimetro * Valore (0.16 e 0.9).
potete aiutarmi non so veramente da dove partire.

Grazie
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
Ma questo top chi è? Uno bravo, oppure un programma che sta in alto ?
Sei nella sezione vba, vorresti un aiuto per modificare un comando, presumo scritto in vba, ma non lo alleghi, non c'è il codice, non specifichi il perimetro di cosa, linee, polilinee, cerchi etc.
Riformula la domanda e spiegati meglio.
Bye
 

Yebisu

Utente Junior
Professione: Geometra
Software: inventor ,solid works, autocad zwcad arcview archicad sketchup
Regione: emilia romagna
si scusa sono stato molto vago, è il caldo aria condizionata rotta :D
..TOP è un programma esterno ... ovviamente ho provato a cercare le vba del comando , ma sono ben nascoste ... oppure non so dove cercarle ... ho trovato il nome della vba , guardando impostazione del pulsante, ho provato a fare un cerca nella cartella di autocad ma nulla ...

il comando calcola il perimetro di tutta la figura comprende linee cerchi ecc.. mi serve moltiplicare quel valore per un calcolo del tempo di lavorazione di una fresa in base al materiale fresato.


Grazie
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
Codice:
(defun c:Perimetro (/ pt1 perim)   
    (setq pt1 (getpoint "Seleziona punto interno: "))
    (setq perim (fnPerimetro pt1))
    (if (/= perim nil)
        (command "_TEXT" "_J" "_M" pt1 "" 0 (strcat "P=" (rtos perim 2)))
    )
)

(defun c:Perimetro016 (/ pt1 perim)
    (setq pt1 (getpoint "Seleziona punto interno: "))
    (setq perim (fnPerimetro pt1))
    (if (/= perim nil)
        (command "_TEXT" "_J" "_M" pt1 "" 0 (strcat "P*0.16=" (rtos (* perim 0.16) 2)))
    )
)

(defun c:Perimetro09 (/ pt1 perim)
    (setq pt1 (getpoint "Seleziona punto interno: "))
    (setq perim (fnPerimetro pt1))
    (if (/= perim nil)
        (command "_TEXT" "_J" "_M" pt1 "" 0 (strcat "P*0.9=" (rtos (* perim 0.9) 2)))
    )
)

(defun fnPerimetro (pt1 / n1 n2 pt1)
    (setq n1 (entlast))
    (command "_bpoly" "_A" "_O" "_R" "" pt1 "")
    (setq n2 (entlast))
    (if (not (equal n1 n2))
        (progn
            (command "_area" "_o" "_last")
            (command "_erase" n "")
            (getvar "perimeter")
        )
        (alert "Problema con calcolo figura interna")
    )
)
E' in lisp, nella forma più semplice possibile, quindi creati un file e incollaci il codice.
Dopo averlo caricato hai 3 comandi, Perimetro, che aggiunge un testo con il relativo valore calcolato usando il comando bpoly, Perimetro09, uguale ma moltiplica per 0.9 e Perimetro016, stessa logica.
Il testo ha altezza come da variabile TEXTSIZE, angolo 0, il valore è formattato in formato decimale, numero dei decimali come da comando UNITS.
 

Yebisu

Utente Junior
Professione: Geometra
Software: inventor ,solid works, autocad zwcad arcview archicad sketchup
Regione: emilia romagna
grazie ! poi penso di poterci riuscire ad associarlo a dei pulsanti ;) smanetto un pò