FastFiber
Menu

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.

Toon bijdragen Menu

Berichten - Reimer

#1
Autolisp / Re: Dynamic blocks kopiëren
ma 05 05 2025, 16:45:48
Lee-Mac heeft een waanzinnige verzameling lisp-routines. Hij heeft ook LM:CopyBlockDefinition gemaakt. Zie: https://www.lee-mac.com/copyblockdefinition.html. Volgens mij doet deze precies wat je beschrijft en moet hij ook werken voor dynamic blocks. Zeker het proberen waard lijkt me. Ik heb hem zelf nog niet gebruikt maar wel vele andere hanige lisps van Lee Mac.

Groeten,
Reimer.
#2
Sorry voor de late reactie maar dat mag zeker.

#3
AutoCAD probleem / Re: Camera lijst?
di 24 09 2024, 11:40:07
Het is mogelijk om met qselect een camera te selecteren door de juiste naam op te geven.
Ik vond het leuk om te proberen dit met een lisp-routine op te lossen.
De onderstaande lisp maakt een lijst van alle camera's in de tekening. Na selectie van een camera wordt deze in de tekening zelf geselecteerd.

(defun c:GETCAM ( / ALLCAMS CNT CAMLIST CAM CAMNAME CAMSEL)
  (setq ALLCAMS (ssget "x" (list '(0 . "CAMERA"))))                               ;selecteer alle camera's in de tekening
  (if ALLCAMS                                                                     ;als er camera's gevonden zijn ga dan door
    (progn                                                                        ;er komt een serie opdrachten
      (setq CNT 0                                                                 ;maak een teller aan
            CAMLIST '())                                                          ;maak een lege lijst aan
      (while (< CNT (sslength ALLCAMS))                                           ;zolang de teller kleiner is dan het aantal geselecteerde camera's ga dan door
        (setq CAM (ssname ALLCAMS CNT))                                           ;selecteer de camera uit de lijst op basis van de teller
        (setq CAMNAME    (vlax-get-property (vlax-ename->vla-object CAM) 'name))     ;pak de naam van de geselecteerde camera
        (setq CAMLIST (append CAMLIST (list CAMNAME)))                            ;voeg de naam toe aan de lijst
        (setq CNT (1+ CNT))                                                       ;hoog de teller op met 1 waarna WHILE opnieuw begint
      );_while
      (setq CAMSEL (LM:listbox "Kies een camera" CAMLIST 2))                      ;start een selectiebox
      (if CAMSEL                                                                  ;is er een selectie gemaakt?
        (command "pselect" (ssname ALLCAMS (car CAMSEL)) "")                      ;zo ja: selecteer de camera in de tekening
      );_if
    );_progn
    (prompt "\nGeen camera's in de tekening gevonden.")                           ;indien in het begin geen camera's zijn gevonden geef dan een melding
  );_if
  (print)
);_defun
;; Listbox funtie Lee-mac
;; https://www.lee-mac.com/listbox.html
(defun LM:listbox ( msg lst bit / dch des tmp rtn )
    (cond
        (   (not
                (and
                    (setq tmp (vl-filename-mktemp nil nil ".dcl"))
                    (setq des (open tmp "w"))
                    (write-line
                        (strcat "listbox:dialog{label=\"" msg "\";spacer;:list_box{key=\"list\";multiple_select="
                            (if (= 1 (logand 1 bit)) "true" "false") ";width=50;height=15;}spacer;ok_cancel;}"
                        )
                        des
                    )
                    (not (close des))
                    (< 0 (setq dch (load_dialog tmp)))
                    (new_dialog "listbox" dch)
                )
            )
            (prompt "\nError Loading List Box Dialog.")
        )
        (   t    
            (start_list "list")
            (foreach itm lst (add_list itm))
            (end_list)
            (setq rtn (set_tile "list" "0"))
            (action_tile "list" "(setq rtn $value)")
            (setq rtn
                (if (= 1 (start_dialog))
                    (if (= 2 (logand 2 bit))
                        (read (strcat "(" rtn ")"))
                        (mapcar '(lambda ( x ) (nth x lst)) (read (strcat "(" rtn ")")))
                    )
                )
            )
        )
    )
    (if (< 0 dch)
        (unload_dialog dch)
    )
    (if (and tmp (setq tmp (findfile tmp)))
        (vl-file-delete tmp)
    )
    rtn
)
#4
forum / Re: spam
wo 31 07 2024, 16:53:31
Dit is echt balen. Ik ontdekte vandaag dat Cadsite.be weer te bereiken is. Echt vervelend dat er zoveel spam op binnenkomt.

Reimer.
#5
Het was even puzzelen omdat ik nooit met Parametric constrains werk. Het lukt echter wel. Zie bijlage.
Je kunt ook de maat van 71 variëren in mijn voorbeeld.
Op een gegeven moment liep het echter niet goed wanneer ik de hoek wijzigde door een getal op te geven bij de properties. Wanneer ik de grips gebruik blijft het wel goed gaan.

Groeten,
Reimer.
#6
Heb je misschien SNAP MODE aan staan (F9)? Hierdoor springt je muis naar punten op een grid die je misschien niet ziet (F7).

Groeten,
Reimer.
#7
AutoCAD probleem / Re: mijn 1e macro
vr 23 12 2022, 15:58:45
De backslash staat voor één gebruikersinvoer. (hier: selecteer een object, beëindig de selectie, kies punt 1).
Als je meer objecten wilt selecteren dan moet je extra backslashes toevoegen.  Hoe het gaat met bijvoorbeeld een crossing selection weet ik zo even niet.
Dit is meteen de beperking van een macro/script. Met lisp kun je dit beter programmeren.

Reimer.
#8
AutoCAD probleem / Re: mijn 1e macro
wo 21 12 2022, 15:08:20
Citaat van: matizje op di 20 12 2022, 12:03:21
...
^C^C_.move \ _.from \\
...
Volgens mij kan dit wel maar moet je een paar dingen wijzigen.
Geen punt bij _from
Na Move wil je een object selecteren en volgens mij ook eerst een startpunt kiezen (als ik je uitleg goed heb begrepen)
^C^C_.move \\\_from \\

Zelf ben ik fan van Lisp en denk ik dat je daar meer plezier van kunt hebben wanneer je meer van dit soort dingen wilt gaan automatiseren.

Groeten,
Reimer.
#9
Bedankt voor het delen van je oplossing. Dit scheelt anderen onnodig zoeken.

Groeten Reimer.
#10
Naast DIVIDE is er ook MEAURE. Hierbij geef je een tussen afstand op.
De tip van Julien vind ik echter beter. Daarbij kun je nog achteraf wijzigen.

Groeten Reimer.
#11
Met qselect kun je objecten selecteren op basis van parameters. Dus ook alle niet gesloten polylines.
Mogelijk kun je hier iets mee.

Reimer.
#12
Er zitten nog wel objecten in tekening test.dwg die je niet met de muis kunt selecteren.
Druk eens op ctrl+A en kijk in de properties wat je allemaal ziet. Ik zie blocks, hatches en plines. De blocks lijken leeg te zijn maar zijn wel in de tekening geplaatst. De hatches en plines hebben de eigenschap 'invisible'  wanneer je LIST gebruikt. Volgens mij betekent dit dat ze verborgen zijn door een Object Isolation. Echter verandert er niet wanneer ik dat beëindig.
Citeer
Command: li LIST 60 found
                  HATCH     Layer: "0"
                            Space: Model space
                            Invisible
                   Color: 254    Linetype: "Continuous"

Je kunt dus met ctrl+A alles in je tekening selecteren en vervolgens wat je wilt behouden weer deselecteren. Daarna erase en je bent de overbodige dingen kwijt. Je kunt ook alles selecteren wat je wilt behouden en dit naar een nieuwe tekening kopieëren.

Groeten,
Reimer.
#13
Ik kan me niet voorstellen dat dit kan met dynamic blocks.
Civil3D kent dit echter wel met multiview blocks. Daarvoor moet je dus wel met Civil3D werken.

Groeten,
Reimer
#14
De vraag is niet duidelijk genoeg volgens mij. Het gaat hier om een Civil 3D surface neem ik aan?
Deze kun je inderdaad niet verbreden. Extra objecten toevoegen om de surface uit te breiden kan wel maar om dit te relateren aan het afschot wordt moeilijk.
Misschien kun je iets meer vertellen over de situatie?

Groeten,
Reimer.
#15
Je kunt hiervoor gebruik maken van PSELECT.
(defun c:test ( / OBJ)
  (setq OBJ (entsel "\nSelecteer een object:"))
  (command "_.pselect" OBJ "")
  (princ)
)


Groeten,
Reimer