CADsite

  • za 10 12 2022, 00:59:54
  • Welkom, gast
Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  

Nieuws:

Toon bijdragen

Deze sectie stelt je in staat om alle bijdragen van dit lid te bekijken. Je kunt alleen de bijdragen zien waar je op dit moment toegang toe hebt.

Berichten - roy_043

Pagina's: 1 [2] 3 4 ... 98
16
AutoCAD probleem / Re: Multilijn aanpassen
« Gepost op: ma 02 11 2020, 18:22:28 »
Het lijkt mij logischer om met een MLine scale van 1 te werken. Dit betekent dat voor de 110mm wand de offsets resp 55 en -55 moeten zijn. Voor de 200mm wand zijn de offsets dan 100 en -100.

18
AutoCAD probleem / Re: Ongeldige index - probleem
« Gepost op: ma 28 09 2020, 09:42:21 »
Volgens het WWW wordt deze foutmelding veroorzaakt door het toepassen van de vlax-safearray->list functie op een lege safearray.

In de code wordt vlax-safearray->list slechts 1x gebruikt:
(setq PlotStyleTables
  (vlax-safearray->list
    (vlax-variant-value
      (vla-getplotstyletablenames
        ActiveLayout
      )
    )
  )
)

Er is dus mogelijk een probleem met de CTB/STB files?

20
AutoCAD probleem / Re: object rond as draaien in 2D
« Gepost op: ma 14 09 2020, 15:06:21 »
Hopelijk kan je me de juiste weg wijzen?
De magenta lijnen in mijn 2e uitleg zijn horizontaal. Dit is bij jou niet het geval. En ik denk dat je bij het tekenen van de Arc start- en eindpunt hebt omgedraaid.

21
AutoCAD probleem / Re: object rond as draaien in 2D
« Gepost op: ma 14 09 2020, 14:19:34 »
De schuine projectie van een cirkel is geen cirkel
maar een ellips
Je hebt mijn antwoorden niet goed begrepen. Bij ouderwetse handmatige isometrische projecties (potlood, papier, liniaal, passer) worden de door mij weergegeven methoden gebruikt om een ellips m.b.v. cirkelsegmenten te benaderen.

22
AutoCAD probleem / Re: object rond as draaien in 2D
« Gepost op: ma 14 09 2020, 09:37:38 »
Ik heb de 2e uitleg en de bijbehorende afbeelding aangepast.

Voor het tekenen van de cirkelbogen kun je de optie Center-Start-End gebruiken. Deze 3 punten zijn geconstrueerd en dus aan te klikken.

23
AutoCAD probleem / Re: object rond as draaien in 2D
« Gepost op: za 12 09 2020, 22:27:51 »
Als de isometrische projectie niet 30 graden is dan werkt deze methode:
  • Teken de omvattende ruit (rood).
  • Verdeel de ruit in 4 delen en teken de twee diagonalen (groen).
  • Teken twee horizontale lijnen vanuit het midden van de verticale segmenten van de ruit (magenta).
  • De twee gemarkeerde punten geven de middelpunten van de te tekenen cirkelbogen aan.

Edit: verbeterde uitleg.

24
AutoCAD probleem / Re: object rond as draaien in 2D
« Gepost op: za 12 09 2020, 19:08:23 »
Het lijkt te gaan om een 'handmatige' isometrische projectie.

De klassieke methode om een cirkel te projecteren is:
  • Teken de omvattende ruit (rood).
  • Verdeel de ruit in 4 delen en teken de langste diagonaal (groen).
  • Teken de kortste diagonalen in de bovenste en onderste helft van de ruit (magenta).
  • De twee gemarkeerde punten geven de middelpunten van de te tekenen cirkelbogen aan.

Deze projectiemethode werkt alleen voor een 30 graden isometrie.

25
Autolisp / Re: Lisp van 2008 werkt niet meer
« Gepost op: vr 04 09 2020, 20:34:27 »
Het is ook aan te raden om _overKill te gebruiken: de 3D polylijnen bevatten segmenten met L=0, en alle elementen zijn 2x gekopieerd.

26
Autolisp / Re: Lisp van 2008 werkt niet meer
« Gepost op: vr 04 09 2020, 18:42:44 »
Zo zou ik dit probleem oplossen:
(defun KGA_Conv_Pickset_To_ObjectList (ss / i ret)
  (if ss
    (repeat (setq i (sslength ss))
      (setq ret (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) ret))
    )
  )
)

(defun KGA_Geom_Angle (pt1 pt2 pt3 / ang)
  (cond
    ((<= (- pi) (setq ang (- (angle pt2 pt3) (angle pt2 pt1))) pi)
      ang
    )
    ((minusp ang)
      (+ ang pi pi)
    )
    (T
      (- ang pi pi)
    )
  )
)

(defun KGA_List_Divide_3 (lst / ret)
  (repeat (/ (length lst) 3)
    (setq ret (cons (list (car lst) (cadr lst) (caddr lst)) ret))
    (setq lst (cdddr lst))
  )
  (reverse ret)
)

; (Fix3DPolyZigZag (vlax-ename->vla-object (car (entsel))))
; 2 opeenvolgende scherpe hoeken van 15 graden of kleiner worden als zaagtand beschouwd.
(defun Fix3DPolyZigZag (obj / ptLst tmp)
  (setq ptLst (KGA_List_Divide_3 (vlax-get obj 'coordinates)))
  (setq tmp
    (mapcar
      '(lambda (ptPre ptCur ptAft / ang)
        (cond
          ((not ptPre)
            nil
          )
          ((not ptAft)
            nil
          )
          ((< (/ pi 12.0) (setq ang (abs (KGA_Geom_Angle ptPre ptCur ptAft))))
            nil
          )
          (T
            ang
          )
        )
      )
      (cons nil ptLst)
      ptLst
      (append (cdr ptLst) '(nil))
    )
  )
  (setq ptLst
    (vl-remove
      nil
      (mapcar
        '(lambda (angPre angCur angAft pt)
          (cond
            ((not angCur)
              pt
            )
            ((< angCur angPre)
              nil
            )
            ((< angCur angAft)
              nil
            )
            (T
              pt
            )
          )
        )
        (cons nil tmp)
        tmp
        (append (cdr tmp) '(nil))
        ptLst
      )
    )
  )
  (vlax-put obj 'coordinates (apply 'append ptLst))
)

(defun c:DwgStarNew ( / doc ss)
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-endundomark doc)
  (vla-startundomark doc)
  (if (setq ss (ssget '((0 . "POLYLINE") (-4 . "&=") (70 . 8))))
    (foreach obj (KGA_Conv_Pickset_To_ObjectList ss)
      (Fix3DPolyZigZag obj)
    )
  )
  (vla-endundomark doc)
  (princ)
)

Edit: Code iets efficiƫnter.

27
Autolisp / Re: oude lisp routines actualiseren
« Gepost op: di 09 06 2020, 10:07:57 »
Ik wil wel naar 1 of 2 dingen kijken.

Het probleem met snap is op te lossen door de OSNAPCOORD variabele op 1 te zetten.

28
Autolisp / Re: oude lisp routines actualiseren
« Gepost op: di 09 06 2020, 09:52:58 »
Ik wil wel naar 1 of 2 dingen kijken.

Liefst het eerst item COORD dat het nuttigste is.

De BricsCAD Lisp API heeft een let functie. In COORD.lsp wordt de functiedefinitie van deze let functie overschreven: (setq let ...). Als je "let" vervangt door "letXY" (op 4 plaatsen) dan werkt de functie. De kwaliteit van de code is overigens matig te noemen.

(defun c:coord()
   (setq cmdecho (getvar "cmdecho"))
   (setvar "cmdecho" 0)
   (command "zoom" "a")
   (setq start (getpoint "Linker bovenhoek: ")) (terpri)
   (setq startx (car start)
         starty (cadr start)
         txtbr (cdr (assoc 41 (tblsearch "style" (getvar "textstyle")))))
   (setq txthgt (udist "Hoogte tekst" 1.75))
   (setq brlet (udist "Breedte kolom letters" (* txtbr txthgt 3.5)))
   (setq brcoor (udist "Breedte kolommen coordinaten" (* brlet 2.0)))
   (setq eindx (+ startx brlet brcoor brcoor))
   (setq eind (list eindx starty))
   (setq letx (+ startx (/ brlet 2.0)))
   (setq y (- starty (+ txthgt (/ txthgt 2.0))))
   (setq letXY (list letx y))
   (command "text" "c" letXY txthgt 100.0 "Pt")
   (setq xcx (+ brlet startx (/ brcoor 2.0)))
   (setq xc (list xcx y))
   (command "text" "c" xc txthgt 100.0 "X")
   (setq ycx (+ xcx brcoor))
   (setq yc (list ycx y))
   (command "text" "c" yc txthgt 100.0 "Y")
   (setq y (- y (+ txthgt txthgt)))
   (setq xcx (+ xcx (* txtbr txthgt 2.5)))
   (setq ycx (+ xcx brcoor))
   (setq txt (getstring "Letter: ")) (terpri)
   (while (/= txt "STOP")
      (setq letXY (list letx y))
      (command "text" "c" letXY txthgt 100.0 txt)
      (setq xc (list xcx y))
      (setq punt (getpoint "Punt: ")) (terpri)
      (setq puntx (rtos (car punt) 2 2))
      (setq punty (rtos (cadr punt) 2 2))
      (command "text" "r" xc txthgt 100.0 puntx)
      (setq yc (list ycx y))
      (command "text" "r" yc txthgt 100.0 punty)
      (setq y (- y (+ txthgt (/ txthgt 2))))
      (setq txt (getstring "Letter: ")) (terpri)
   )
   (setq y (+ y txthgt))
   (princ y)
   (command "zoom" "a")
   (command "line" start eind "")
   (command "offset" (* txthgt 2) (entlast) xc "")
   (setq eind (list startx y))
   (command "offset" "t" (entlast) eind "")
   (command "line" start eind "")
   (command "offset" brlet (entlast) yc "")
   (command "offset" brcoor (entlast) yc "")
   (command "offset" brcoor (entlast) yc "")
   (setvar "cmdecho" cmdecho)
)

29
Autolisp / Re: oude lisp routines actualiseren
« Gepost op: do 14 05 2020, 11:24:29 »
Ik wil wel naar 1 of 2 dingen kijken.

30
Autolisp / Re: ontleden van ole-objecten
« Gepost op: do 16 04 2020, 10:40:38 »
Met Lisp is dit niet mogelijk.

Pagina's: 1 [2] 3 4 ... 98