FastFiber

wie vindt de fout?

Gestart door julien, vr 20 08 2004, 09:13:15

Vorige topic - Volgende topic

julien

Ik gebruik vaak volgende lisp:
Citeer(defun C:nummer (/ beginwaarde verschil getal)
   (setq beginwaarde (getint "\nBeginwaarde: "))
   (setq verschil (getint "\nStap: "))
       (setq getal (entsel "\nKlik op het eerste nummer:"))
       (while (/= getal nill)
               (command "change" getal "" "" "" "" "" "" beginwaarde)
               (setq beginwaarde (+ beginwaarde verschil))
               (setq getal (entsel "\nVolgende nummer:"))
        (if (= getal nill)(setq getal(entsel "\nVolgende poging of enter om af te sluiten:")))
       )
       (princ)
)
Soms werkt het goed en andere keren niet...
Vaak is de oplossing even autocad afsluiten en heropstarten.

Wanneer ik volgende nummers aanklik krijg ik in de command lines:
CiteerKlik op het eerste nummer:
Volgende nummer:8
Volgende nummer:10
Volgende nummer:12
Maar de getallen veranderen niet. Ziet iemand wat er mis zou kunnen zijn?

bart

(defun C:nummer (/ beginwaarde verschil getal)
(setq beginwaarde (getint "\nBeginwaarde: "))
(setq verschil (getint "\nStap: "))
(setq getal (entsel "\nKlik op het eerste nummer:"))
(while (/= getal nill)
(command"change" getal "" "" "" "" "" beginwaarde)
(setq beginwaarde (+ beginwaarde verschil))
(setq getal (entsel "\nVolgende nummer:"))
(if (= getal nill)(setq getal(entsel "\nVolgende poging of enter om af te sluiten:")))
)
(princ)
)

verander de rode regel
(stond een enter te veel change werd afgeloten zonder wijziging)


tip zet cmdecho op 1 tijdens het testen van een lisp dan zie je veel meer

APPLOAD nummer.lsp successfully loaded.
Command:
Command:
Command: nummer
Beginwaarde: 2
Stap: 4
Klik op het eerste nummer:change
Select objects: L 1 found
Select objects: Specify change point or [Properties]:
Specify new text insertion point <no change>:
Enter new text style <5-iso>:
Specify new rotation angle <0>:
Enter new text <600>:  <--- hier zie je dat er geen waarde wordt gegeven
Command: 2
Command:
Volgende nummer:ap
*Invalid selection*
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

julien

Ik heb dit even gedaan en het werkte niet meer, terug naar de originele toestand en het werkt weer...  :shock:

bart

heb je de regel geknipt en geplakt er zijn ook nog een paar spaties uit gegaan.

werkt het dan nog niet zet dan even de commandline tekst er op met cmdecho op 1


bij mij werkt hij zo
ik heb er even mee gespeeld maar volgs mij is alleen de bewuste regel aangepast

(defun C:nummer (/ beginwaarde verschil getal)
(setq beginwaarde (getint "\nBeginwaarde: "))
(setq verschil (getint "\nStap: "))
(setq getal (entsel "\nKlik op het eerste nummer:"))
(while (/= getal nill)
(command"change" getal "" "" "" "" "" beginwaarde)
(setq beginwaarde (+ beginwaarde verschil))
(setq getal (entsel "\nVolgende nummer:"))
(if (= getal nill)(setq getal(entsel "\nVolgende poging of enter om af te sluiten:")))
)
(princ)
)
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

julien

Ik heb alles van u overgenomen en krijg het volgende:
Command: nummer
Beginwaarde: 2
Stap: 2
Klik op het eerste nummer:change
Select objects:   1 found
Select objects: Specify change point or [Properties]:
Specify new text insertion point <no change>:
Enter new text style <Standard>:
Specify new height <150.0000>:
Specify new rotation angle <9>: 2
Enter new text <23>:
Volgende nummer:change
Command: <Entity name: 7E4031F0>

Ik heb er nu de enter weer tussen gezet en het lijkt correct te werken.
Een mysterie...
Bedankt trouwens voor de tip. Ik wist niet dat je alles in het oog kan houden met cmdecho.
Je ziet het, ik ben een echte beginner met lisp...

bart

ik zie het al je gebuikt een tekststijl waarvan de hoogte op 0 staat
dan heb je inderdaad een enter meer nodig

(command"change" getal "" "" "" "" "" "" beginwaarde)

zou dan wel moeten werken
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

julien

Het werkt inderdaad meestal.
Wanneer het nog eens niet goed werkt zal ik smdeccho op 1 zetten en zien wat er misloopt.

Bedankt allessinds!

bart

waarschijnlijk is bovenstaande de reden van de fout
probeer maar eens met een textstyle waarbij de hoogte in de style is gedefineerd

je kan denk ik beter een andere methode kan kiezen om de tekst aan te passen.
1 die minder afhankelijk is van hoe de teks is gemaakt .

tekst verwijderen en opnieuw plaatsen is waarschijnlijk beter
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Joop

Julien,

Het commando change heeft, zoals je wel gemerkt zult hebben, nogal wat beperkingen, om de doodeenvoudige reden dat het te veel wild doen.
Daarom heb ik jouw routine aangepast zodat het altijd (?) werkt.
In principe vervangt het in de database van de tekening de bestaande tekst door een nieuwe tekst, i.g. het getal.
Veel plezier ermee.

Joop

(defun c:Nummer (/ Beginwaarde Verschil Getal BeginwaardeTekst NieuwGetal)
 (setq Beginwaarde (getint "\Beginwaarde: "))
 (setq Verschil (getint "\nStap: "))
 (setq Getal (entsel "\nKlik op het eerste nummer: "))
 (while (/= Getal nil)
   (setq BeginwaardeTekst (rtos Beginwaarde))
   (setq Getal (entget (car Getal)))
   (setq NieuwGetal (subst (cons 1 BeginwaardeTekst) (assoc 1 Getal) Getal))
   (entmod NieuwGetal)
   (setq Beginwaarde (+ Beginwaarde Verschil))
   (setq Getal (entsel "\nSelecteer het volgende nummer: "))
   (if (= Getal nil)
     (setq Getal (entsel "\nVolgende poging of enter om af te sluiten: "))
   ) ;_ end of if
 ) ;_ end of while
) ;_ end of defun

;|«Visual LISP© Format Options»
(100 2 40 2 T "end of " 80 9 0 0 nil T T nil T)
;*** DO NOT add text below the comment! ***|;
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

julien

Het lukt me niet om deze lisp te gebruiken:
CiteerCommand: appload
optel.lsp successfully loaded.
Command: ; error: bad argument type: numberp: nil

bart

volgens mij heb niet de juiste lips geladen (tenzij je de naam nummer in optel hebt gewijzigd).


(defun c:Nummer   en zo voort..

een dergelijke lisp sla ik op op de onder de naam nummer.lsp
(dat hoeft niet perse maar dit voorkomt dat ik in de code moet kijken om te weten hoe hij start

deze lisp start door nummer op de commandlijn te typen
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

julien

ik heb nummer idd door optel vervangen.

bart

bij mij werkt hij gewoon.

Ik krijg een dergelijke deze foutmelding zelf ook wel eens als ik bepaalde funties van het express menu gebruik
de fout treed daarna op in sommige van mij eigen lispen en het commando layiso werkt dan niet meer.
(ik ben er nog steeds nioet achter waar e.a. aan ligt )
na het opnieuw starten van autocad is het altijd over
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Joop

Bart,

Dat je na gebruik van het Express menu deze foutmelding krijgt in jouw eigen LISP routines komt mijns inzien doordat de routines in het Express menu geladen worden NADAT jouw routines geladen zijn. :shock:
Hierdoor worden enkele instructies en/of variabelen en/of andere elementen overschreven door die van het Express menu. :twisted:

Je kunt dit controleren door jouw routines, nadat de foutmelding is gegeven, nogmaals te laden. Nu echter handmatig of met behulp van de Visual LISP editor.
Ik beveel je de laatste methode aan i.v.m. de debug functie van VLE.

Succes,

Joop
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

FastFiber