CADsite forum

AutoCAD => Autolisp => Topic gestart door: Atwist op ma 01 02 2010, 21:21:52

Titel: Pijl moet groter maar hoe ( Opgelost door Roy_043)
Bericht door: Atwist op ma 01 02 2010, 21:21:52
Hallo forumleden,

In de vorige topic heeft sscheper en Reimer de lisp werkend gekregen, maar ik wil dat de pijl groter wordt.
Ik heb al het een en ander gewijzigt maar zonder resultaat.

Wie zou eens willen kijken en kunnen uitleggen hoe het wel kan.

(DEFUN C:Pijl()

 (setvar "cmdecho" 0)
 (command "_LAYER" "_M" "Pos-nummers" "_c" "193" "" "" "" "" "")
 (command "_LAYER" "_S" "Pos-nummers" "")

(SETQ S (GETPOINT "\nStart: ")
      E (GETPOINT S "\nEinde: "))

(COMMAND "PLINE"
         S
         "_W" 0 0
         (POLAR S (angle s e) (- (Distance S E) (GETVAR "TEXTSIZE")))
         "_W" (/ (* 2.0 (GETVAR "TEXTSIZE")) 1.0) 0 E "")
(terpri)
)


Met vriendelijke groet

Atwist
Titel: Re:Pijl moet groter maar hoe
Bericht door: roy_043 op di 02 02 2010, 00:36:16
Door de toevoeging van 2 extra variabelen wordt het denk ik wat duidelijker:

(defun c:Pijl ( / S E pijlpuntLengte pijlpuntBreedte)
  (setvar "cmdecho" 0)
  (command "_layer" "_make" "Pos-nummers" "_color" "193" "" "") ; hier stonden wat "" teveel
  (setq S (getpoint "\nStart: ")
        E (getpoint S "\nEinde: ")
        pijlpuntLengte (* (getvar "textsize") 2)   ; pijlpuntLengte en pijlpuntBreedte
        pijlpuntBreedte (* (getvar "textsize") 2)) ; worden afgeleid van de teksthoogte
  (command "_pline"
           S
           "_width" 0 0
           (polar S (angle S E) (- (distance S E) pijlpuntLengte))
           "_width" pijlpuntBreedte 0
           E
           "")
  (princ)
)

Het is natuurlijk een zinnige gedachte om de afmetingen van de pijlpunt te baseren op de teksthoogte. Maar als je pijlen met steeds dezelfde afmetingen wilt, dan kun je de betreffende regels (R.6 en R.7) ook vervangen door bijvoorbeeld:

        pijlpuntLengte 360   ; pijlpuntLengte en pijlpuntBreedte
        pijlpuntBreedte 360) ; hebben een vaste maat
Titel: Re:Pijl moet groter maar hoe
Bericht door: Atwist op di 02 02 2010, 10:43:10
Beste Roy,

Je hebt helemaal gelijk ik ben erachter gekomen dat ik gisteren op een lege tekening deze lisp hebt getest vandaar mijn vraag.  :?
Gebruik de lisp nu in een ontwerp tekening en nu wordt er een mooie pijl gemaakt. :mrgreen:
Toen Reimer deze had aangepast werkt het ook goed stond toen ook in een ontwerp tekening, na die tijd bij ik in een lege tekening verder gegaan om vervuiling van het ontwerp tegen te gaan, maar nu werkt hij weer.

Mijn dank is weer groot.

Atwist
Titel: Re:Pijl moet groter maar hoe ( werkt niet en ik wordt er gestoord van)
Bericht door: Atwist op do 04 02 2010, 12:45:11
Hallo forumleden,

Heb een lisp (mede mogelijk gemaakt door Roy_043) om een aanwijspijl te maken, het werkt maar af en toe.
Mijn letter hoogtte is 4 mm en de aanwijspijl wordt 1,5 METER terwijl de pijl met de leter groote mee gaat.
Hieron de code:

(defun c:Pijl ( / S E pijlpuntLengte pijlpuntBreedte)
  (setvar "cmdecho" 0)
  (command "_layer" "_make" "Pos-nummers" "_color" "193" "" "") ;
  (setq S (getpoint "\nStart: ")
        E (getpoint S "\nEinde: ")
        pijlpuntLengte (* (getvar "textsize") 2)   ;
        pijlpuntBreedte (* (getvar "textsize") 1)) ;
  (command "_pline"
           S
           "_width" 0 0
           (polar S (angle S E) (- (distance S E) pijlpuntLengte))
           "_width" pijlpuntBreedte 0
           E
           "")
  (princ)
)


Wie zou mij kunnen helpen.
Titel: Re:Pijl moet groter maar hoe ( werkt niet en ik wordt er gestoord van)
Bericht door: roy_043 op do 04 02 2010, 15:22:11
Teksthoogte 4mm en textsize 1500mm: hoe kan dat?
Is de tekst in feite een attribuut?
Misschien speelt annotive scale een rol (Bricscad ondersteund dit niet)?

Post eens een tekening met één zo'n pijl met tekst (niet dwg-versie 2010).
Titel: Re:Pijl moet groter maar hoe ( werkt niet en ik wordt er gestoord van)
Bericht door: Atwist op do 04 02 2010, 16:20:00
Hallo Roy,

Heb een tekening bijgevoegd om je de grote pijl te laten zien maar nu lukt het niet om een grote pijl te krijgen, maar de eerste 3 aanwijspijlen waren goed de laatste 2 wel een lijn maar geen pijl.

Ik snap er nu helemaal geen snars meer van.
Titel: Re:Pijl moet groter maar hoe ( werkt niet en ik wordt er gestoord van)
Bericht door: roy_043 op do 04 02 2010, 16:47:01
OK mijn fout: voor AutoCAD moet de OSMODE tijdelijk op 0 worden gezet. Voor Bricscad hoeft dat niet.

(defun c:Pijl ( / oldOsmode S E pijlpuntLengte pijlpuntBreedte)
  (setvar "cmdecho" 0)
  (command "_layer" "_make" "Pos-nummers" "_color" "193" "" "")
  (setq
    oldOsmode (getvar "osmode")
    S (getpoint "\nStart: ")
    E (getpoint S "\nEinde: ")
    pijlpuntLengte (* (getvar "textsize") 2)
    pijlpuntBreedte (* (getvar "textsize") 1)
  )
  (setvar "osmode" 0)
  (command
    "_pline"
    S
    "_width" 0 0
    (polar S (angle S E) (- (distance S E) pijlpuntLengte))
    "_width" pijlpuntBreedte 0
    E
    ""
  )
  (setvar "osmode" oldOsmode)
  (princ)
)
Titel: Re:Pijl moet groter maar hoe ( werkt niet en ik wordt er gestoord van)
Bericht door: Atwist op do 04 02 2010, 16:59:23
Ben al lang bij dat je even wilt  kijk wat er mis is :vreegoe:

Heb de laatst lisp gebruikt, maar krijg nu.

Command: _appload pijl.lsp successfully loaded.
Command: ; error: bad argument type: numberp: nil
Command:

Titel: Re:Pijl moet groter maar hoe ( werkt niet en ik wordt er gestoord van)
Bericht door: roy_043 op do 04 02 2010, 17:26:27
Probeer eerst of je in een nieuwe lege tekening hetzelfde probleem hebt.
Als dat zo is, post dan het lisp-bestand zoals jij dat gebruikt (om kopieerfouten uit te sluiten).
Titel: Re:Pijl moet groter maar hoe ( werkt niet en ik wordt er gestoord van)
Bericht door: Atwist op do 04 02 2010, 17:38:55
Bij een compleet lege tekening krijg ik deze melding
Command: (load"pijl")
_LAYER
Current layer:  "0"
Enter an option
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
_S
Enter layer name to make current or <select object>: 0 Enter an option
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
Command: REGEN Regenerating model.

Command: _UCS
Current ucs name:  *WORLD*
Enter an option [New/Move/orthoGraphic/Prev/Restore/Save/Del/Apply/?/World]
<World>: _Origin
Specify new origin point <0,0,0>:
Command: bad argument type: numberp: nil
Command: pijl
Unknown command "PIJL".  Press F1 for help.


Ik gebruik deze code
defun c:Pijl ( / oldOsmode S E pijlpuntLengte pijlpuntBreedte)
  (setvar "cmdecho" 0)
  (command "_layer" "_make" "Pos-nummers" "_color" "193" "" "")
  (setq

    oldOsmode (getvar "osmode")
    S (getpoint "\nStart: ")
    E (getpoint S "\nEinde: ")
    pijlpuntLengte (* (getvar "textsize") 2)
    pijlpuntBreedte (* (getvar "textsize") 1)
  )
  (setvar "osmode" 0)
  (command
    "_pline"
    S
    "_width" 0 0
    (polar S (angle S E) (- (distance S E) pijlpuntLengte))
    "_width" pijlpuntBreedte 0
    E
    ""
  )
  (setvar "osmode" oldOsmode)
  (princ)

Titel: Re:Pijl moet groter maar hoe ( werkt niet en ik wordt er gestoord van)
Bericht door: roy_043 op do 04 02 2010, 18:58:47
Aan het begin ontbreekt 1x ( en je bent de laatste regel (met 1x ) ) vergeten mee te kopiëren.
Titel: Re:Pijl moet groter maar hoe ( werkt niet en ik wordt er gestoord van)
Bericht door: Atwist op do 04 02 2010, 19:47:05
Roy

Hij is helemaal topie, werkt nu bij elke wijziging van leter grote (uitvoerig getest) :vreegoe: :vreegoe:

Atwist