ciao gp
...questi sotto sono i messaggi di errore che si verificano quando lancio il programma qf...
error: impossibile ottenere objectid: #<vla-object 157d8844>
comando: qf
error: elenco di associazione errato: (nil)[/I]
non riesco a replicare l'errore, credo sia legato alla versione del sistema operativo (32/64 bit), tu quale usi?
a qualcun'altro è successo?
nei miei programmi, io conosco in ogni momento in che scala sto disegno perchè la variabile dimscale viene risettata ogni volta che cambio scala.
se visualizzi la tabella proprietà di
dieci quote aventi diverse altezze del testo in quanto disegnate con valori diversi di dimscale osservi che
tutte hanno gli stessi valori di "altezza testo", "offset testo", ecc.
per la carità, ognuno ha le sue preferenze, ma personalmente preferisco sapere i valori "reali" degli oggetti che seleziono.
...un'altra varibile che dovrebbe essere prevista è il fattore di scala. quando si ingrandisce una sezione di 2,5 volte è sufficiente reimpostare il fattore di scala a 0,4 per avere le quotature giuste e non ingrandite.
qundi il nel tuo programma devi solo prevedere queste 2 variabili, che poi noi utilizziamo prima di lanciare il programma a seconda di ciò che stiamo disegnando. non devi occuparti tu della gestione della scala, perchè non riusciresti a intercettare tutte le situazioni. la gestione della scala la facciamo noi, e in caso di altezza dei testi errati o di quotature non corrette, ci saranno dei programmi lisp di editing che consentiranno la correzione se non si vuole tornare indietro.
ho visto che hai già risolto...
anche qui è questione di gusti, onestamente devo dire che ho concepito il programma per un probabile mio utilizzo, preferisco automatizzare e rispondere ad alcune richieste di meno.
in qf ad ogni lancio vengono riproposti (visualizzati) i valori correnti, se vanno bene non c'è bisogno di impostare nulla, modificando un valore l'altezza viene rimodulata e mantenuta anche nei lanci successivi fino al modificarsi delle esigenze.
... per eseguire un programma, non devo digitare ogni volta (load “programma”) perché il comando è associato al tasto. inoltre, così non ho l’onere di caricare preventivamente i programmi.
io ho concepito così gli applicativi, voi che ne pensate? e’ meglio fare in altro modo?.
caricare i programmi prima di lanciarli è assolutamente ininfluente sulle prestazioni dei pc di oggi, è sicuramente meglio assegnare un nome al defun, valuta che oltretutto:
1) si può caricare la funzione solo se non già caricata (confutatis docet) ->
^c^c(if (null c:qf2)(load "qf2")) qf2
2) inserendo le istruzioni per il caricamento nel file acaddoc.lsp, ad esempio
(autoload "qf" '("qf")) puoi lanciare il lisp digitando
qf da tastiera o assegnare solo
^c^cqf alla macro del pulsante, in ogni caso il lisp verrà caricato,
una sola volta, al momento del
primo lancio
3) non ho testato, ma premendo invio la routine viene ripetuta o devi di nuovo cercare e cliccare sul pulsante???
...ad esempio dove trovo la spiegazione di vlax?...
oltre ai link che ti hanno già segnalato, se disponi di autocad <2013 puoi trovare l'elenco delle funzioni vlax nell'help: autolisp reference guide\autolisp functions, sotto la lettera v.
viceversa posso magari allegare un vecchio chm della 2008.
....ho poi azzerato le variabili orthomode e osmode perchè per punti vicini si ottine una quota 0 (prende i punti sbagliati)...
e' vero, bisogna settare osmode, ma orthomode è ininfluente.
non mi sono reso conto di eventuali problemi perchè per default ho osnapcoord = 2 e l'errore non mi si è manifestato.