FastFiber

text window wordt geopend bij het uitvoeren van een getpoint commando

Gestart door delangstevandestraat, wo 15 02 2017, 10:35:32

Vorige topic - Volgende topic

delangstevandestraat

Vroeger werkte  lager te vinden  stukje code perfect,
maar recent wordt er bij uitvoering geswitched naar het text window dat zelfs niet open stond...

Waarschijnlijk één of andere sysvar?
maar geen idee welke...
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

gery

AutoCAD 2020 - Windows 10

delangstevandestraat

#2
@gery,

ik heb
(command "graphscr")
tussengevoegd voor getpoint om de routine te dwingen naar het tekenvenster te switchen en
(command "textscr") op het einde om het texwindow te sluiten
omdat het zo nu wel werkt, soort van work around,
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

EddyBeerke

#3
Probeer dit eens want er staan een paar fouten in de code die je gedeeld hebt:
(defun C:RT ( / sp ep oldosmode ss lengte) ;variabelen declareren
  (setq oldosmode (getvar "osmode"))
  ;(command "-style" "arial" "arial" "" "" "" "N" "N")
  (command "-STYLE" "Arial" "arial" "" "" "" "N" "N" "N")

  (command "-units" 2 3 4 3 0 "N") ;units correct instellen
  (command "textstyle" "arial") ;actieve textstyle instellen
  (command "-layer" "_make" "Y_TEXT_AFSTANDEN" "set" "Y_TEXT_AFSTANDEN" "") ;Layer aanmaken en actief zetten
  (setq ss (ssadd)) ;Steek lijn in ss om deze later te kunnen deleten
  (setvar "osmode" 1)
  (setvar "dimzin" 0)
  ;(command "graphscr") <-- Gewoon weglaten!!!
  (setq SP (getpoint "\nSelecteer 1e punt") ;Vraag 1e punt aan gebruiker
EP (getpoint SP "\nSelecteer 2e punt")) ;Vraag 2e punt aan gebruiker
  (command "line" SP EP "") ;Teken lijn tussen de twee punten
  (ssadd (entlast) ss)
  (setq lengte (strcat (rtos (distance SP EP)2 3)"m"))
 
  (setvar "osmode" 2)
  (setq hoek (angle SP EP)
          afstand (/ (distance SP EP) 2)
          positie (polar SP hoek afstand)
  )
  (command-s "text" "bc" positie 0.5 hoek lengte)
  (command "erase" ss "")
  (setvar "osmode" oldosmode)
  ;(command "textscr")
  (princ)
) ;end defun


Hoewel in niet weet waar om je de instellingen veranderd van de units e.d.
De hoek kun je ook met een de volgende functies doen:
;; (dtr) converts degrees to radians
(defun dtr (a)
  (* pi (/ a 180))
) ;_ end of defun

;;; (rtd) converts radians to degrees
(defun rtd (a)
  (/ (* a 180) pi)
) ;_ end of defun


Het formatteren van je output kun je doen door bv:
(rtos x 2 2)
Waar x voor de waarde staat.

EDIT: Code beetje opgeschoont.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

gery

Citaat van: delangstevandestraat op do 16 02 2017, 09:45:37
@gery,

die graphscr en textscr staan er nu omdat het zo nu wel werkt,
soort van work around,

de ' fout ' deed/doet zich voor als je die twee regels er uithaalt
Waarom geef je die info nu pas?
En bent u zeker van dat enkelvoudig aanhalingsteken in (command "graphscr'")?
AutoCAD 2020 - Windows 10

Reimer

Citaat van: gery op wo 15 02 2017, 11:38:40
verwijder het ' in (command "graphscr'")
Gery geeft terecht aan dat er een apostrof (') te veel in de regel staat. Je moet niet de hele regel weghalen.

Reimer

delangstevandestraat

#6
grr,

deze draad gaat zo de verkeerde kant uit...

laat ons opnieuw beginnen: (ik zal de originele verwarrende posts er uithalen ;-)

onderstaande heeft een jaar lang goed gewerkt

;RT zet een tekst boven een (poly)line/arc met als tekst de lengte tussen 2 gevraagde punten
(defun C:RT ( / sp ep oldosmode ss lengte) ;variabelen declareren
  (setq oldosmode (getvar "osmode"))
  (command "-style" "arial" "arial" "" "" "" "N" "N")
  (command "-units" 2 3 4 3 0 "N" ;units correct instellen
   "textstyle" "arial") ;actieve textstyle instellen
  (command "-layer" "_make" "Y_TEXT_AFSTANDEN" "set" "Y_TEXT_AFSTANDEN" "") ;Layer aanmaken en actief zetten
  (setq ss (ssadd)) ;Steek lijn in ss om deze later te kunnen deleten
  (setvar "osmode" 1)
  (setvar "dimzin" 0)
  (setq SP (getpoint "\nSelecteer 1e punt") ;Vraag 1e punt aan gebruiker
EP (getpoint "\nSelecteer 2e punt")) ;Vraag 2e punt aan gebruiker
  (command "line" SP EP "") ;Teken lijn tussen de twee punten
  (ssadd (entlast) ss)
  (setq lengte (strcat (rtos (distance SP EP)2 3)"m"))
  (setvar "osmode" 2)
  (setq hoek (angle SP EP)
afstand (/ (distance SP EP) 2)
  positie (polar SP hoek afstand))
  (command-s "text" "bc" positie 0.5 hoek lengte)
  (command "erase" ss "")
  (setvar "osmode" oldosmode)
(princ)
) ;end defun



en word plots bij het uitvoeren van de routine een text window geopend,

om dit op te lossen zijn de regels grahoscr en textscr erbij gekomen, om dat scherm weer weg te krijgen...

DE VRAAG :  hoe komt het dat dat text scherm er uberhaupt komt ? (ttz nu plots komt)
want daardoor is de muis niet meer actief, maar wel de cursor in het textwindow.


@beerke :

het is code die inderhaast is geknipt en geplakt, en heeft al hele tijd gedaan wat 'ie moest doen

het enige wat is dan nog van verschil zie is dat je "-style" in caps zet, wat volgens mij niet uitmaakt ?
en een extra "n"

maar "-style" heeft
-specify font           
-specify height
-specify width
-specify angle
-backwards Y/N
-upsidedown y/N
dus waarvoor die extra no ?


of zijn er nog dingen die ik over het hoofd zie ?

* die units moeten zo staan anders klopt het formaat niet met wat er gewenst is voor deze plans
* waarom rtd en dtr, code is nu toch lekker compact ?
* format van output, doe ik toch met rtos, ook lekker compact ?

begrijp met niet verkeerd he eddy, maar ik snap niet wat er 'fout' is ?
't zal wel mijn andere blonde cel zijn die het niet snapt :oops: :oops:
behalve dat de textwindow open gaat ;-)


Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

Reimer

Ik zie net dat -units de text window opent omdat deze veel text moet laten zien. Waarom dat in het verleden niet gebeurde weet ik niet.
Zoals je zelf al had gezien kun je de text window weer sluiten door naar het grafische venster te gaan met (command "graphscr").
Volgens mij hoe je aan het einde niet (command "textscr") toe te voegen. Bij mij wordt de text window dan juist weer geopend.

(Ik heb niet gekeken naar gedeelte over de textstyle.)

Reimer

bart

 in acad. 2014 sluit TEXTSCR het textvenster ook
(is beter als je een tweede monitor gebruikt)
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

roy_043

Dit:
(command "-units" 2 3 4 3 0 "N")
Kan worden vervangen door:
(setvar 'lunits 2)
(setvar 'luprec 3)
(setvar 'aunits 3)
(setvar 'auprec 3)
(setvar 'angbase 0)
(setvar 'angdir 0)