CADsite forum

AutoCAD => AutoCAD probleem => Topic gestart door: matizje op di 20 12 2022, 09:50:21

Titel: mijn 1e macro
Bericht door: matizje op di 20 12 2022, 09:50:21
Hallo,
ik ben uit nieuwsgierigheid begonnen met macro's te schrijven voor Autocad 2016. Ik kan heel veel info vinden op internet maar loop tegen het volgende probleem aan en ben eigenlijk op zoek naar een voorzetje.
Ik wil graag een macro met de volgende commandos:
move from basepoint met een offset. Als ik deze macro opneem met de action-recorder staan er al coördinaten in de macro en ik wil de macro dus zo maken dat ik het basepoint en de offset nog kan bepalen. Wie geeft mij de voorzet?

Alvast bedankt
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 10:19:37
Een LISP-routine lijkt me de beste oplossing te zijn. Tenminste zo zou ik het oplossen.
Titel: Re: mijn 1e macro
Bericht door: matizje op di 20 12 2022, 10:22:36
dus is het niet mogelijk met een simpele macro?
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 10:59:47
Citaat van: matizje op di 20 12 2022, 10:22:36
dus is het niet mogelijk met een simpele macro?
Volgens mij niet, maar ik gebruik zelden tot nooit macro's dus ik ben geen referentie op dat gebied, ik werk liever met LISP, dat is veel krachtiger.
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 11:10:07
Kan dit misschien een oplossing zijn?

https://knowledge.autodesk.com/support/autocad-lt/learn-explore/caas/CloudHelp/cloudhelp/2019/ENU/AutoCAD-LT/files/GUID-9D921CDD-89A3-44AB-865A-00F8986611F2-htm.html
Titel: Re: mijn 1e macro
Bericht door: matizje op di 20 12 2022, 12:03:21
dit helpt zeker maar weet alleen niet hoe ik dit nu moet toepassen in de macro.
Ik heb nu de volgende macro-regel

^C^C_.move \ _.from \\

Alleen het _from commando wordt niet geactiveerd bij de vraag : "specify second point: vh MOVE commando
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 12:18:28
Moet die "from" daar wel staan?
Titel: Re: mijn 1e macro
Bericht door: matizje op di 20 12 2022, 12:28:02
volgens mij wel, ik wil nl vanaf het 2e specify point een offset geven voor het MOVE commande.
Normaal klik ik dan tijdens get MOVE commando op de SHIFT+rechtermuis-knop om FROM te selecteren, zie bijlage
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 13:08:35
Is "from" wel een geldig commando?
Titel: Re: mijn 1e macro
Bericht door: matizje op di 20 12 2022, 13:17:06
commando staat in het :  "object snap cursor menu" , zie bijlage

of moet ik dit shortcut menu verwerken in de macro???
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 13:24:49
Maar kan je die zomaar gebruiken in het move commando in een macro?
Titel: Re: mijn 1e macro
Bericht door: matizje op di 20 12 2022, 13:30:16
dat is dus eigenlijk de grote vraag voor een beginnend macro schrijver......
als ik het menu kan aanroepen dmv een macro zou ook de oplossing kunnen zijn
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 13:56:41
Sorry, daarmee kan ik niet helpen, zoals gezegd, ik ben een LISP man.
Titel: Re: mijn 1e macro
Bericht door: matizje op di 20 12 2022, 14:25:11
thx anyway
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 14:42:30
you're welcome
Titel: Re: mijn 1e macro
Bericht door: matizje op di 20 12 2022, 15:03:00
hoe zou zoiets eruit komen te zien in LIsp dan, ga ik me daarin verdiepen

de manier zoals ik het nu doe met SHIFT+rechter muis geeft dit weer in het commandoscherm:

MOVE
Select objects: 1 found
Select objects:
Specify base point or [Displacement] <Displacement>:
Specify second point or <use first point as displacement>:
>>Enter new value for ORTHOMODE <1>:
Resuming MOVE command.
Specify second point or <use first point as displacement>: _from Base point: <Offset>: 50
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 15:53:03
Als je bij "specify second point or <use first point as displacement>:" @50,0 invult, dan krijg je een verschuiving van 50 eenheden in positieve richting op de X-as. Vul je @0,-50 in, dan krijg je een verschuiving van 50 eenheden in negatieve richting op de Y-as. Vul je @50,50 in dan krijg je een verschuiving van +50 eenheden op de X-as en +50 eenheden op de Y-as. Het is hierbij niet van belang wat je als base point kiest.
Is dat misschien wat je in gedachten had?
Titel: Re: mijn 1e macro
Bericht door: matizje op di 20 12 2022, 21:04:05
ik wil het aantal eenheden pas invoeren bij het uitvoeren van de macro. Dus ik selecteer een lijn, geef het basepoint van deze lijn aan. Vervolgens wil ik een punt op een andere lijn aangeven wat als basis dient voor de verplaatsing en dan pas het aantal eenheden van de verplaatsing.
Titel: Re: mijn 1e macro
Bericht door: gery op di 20 12 2022, 22:55:17
Ik vrees dat ik je niet helemaal begrijp.
Titel: Re: mijn 1e macro
Bericht door: Reimer op 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.
Titel: Re: mijn 1e macro
Bericht door: matizje op do 22 12 2022, 08:59:57
Reimer,

dat is 'm, het werkt.  BEDANKT!!!!!!!!!!!!!!!
Titel: Re: mijn 1e macro
Bericht door: matizje op vr 23 12 2022, 11:08:42
Reimer,

ik heb iets te vroeg gejuicht. Ik kan met deze macro maar 1 object selecteren en geen meerdere. Als ik meerdere objecten achter elkaar selecteer kopieert ACAD deze object niet vanaf het 2 basepoint maar van de orginele positie. Hoe kan ik dit aanpassen?
Titel: Re: mijn 1e macro
Bericht door: bart op vr 23 12 2022, 13:20:17
Als je een macro maakt probeer dan eerste of je de actie op je scherm voor elkaar krijg.
En macro is vooral een aantal opeenvolgende commando's
via diesel kan er wat intelligentie in maar dat is beperkt.

move is een verplaatsing over een vector.
alle objecten ondergaan de zelfde verplaatsing.
als je meerdere objecten wilt verplaatsen met een andere vector moet je meerder keren move gebruiken dan kan het niet in 1 keer
Titel: Re: mijn 1e macro
Bericht door: matizje op vr 23 12 2022, 14:41:49
het gaat om objecten(2 lijnen) die tegelijk verplaatst moeten worden op de zelfde vector
Titel: Re: mijn 1e macro
Bericht door: Reimer op 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.
Titel: Re: mijn 1e macro
Bericht door: matizje op vr 23 12 2022, 16:54:11
thx, het werkt nu naar behoren
Titel: Re: mijn 1e macro
Bericht door: bart op vr 23 12 2022, 17:31:50
je kan je macro ook beginnen met select en can bijvoorbeeld een crossing dan is het aantal elementen flexibel
Titel: Re: mijn 1e macro
Bericht door: EddyBeerke op vr 20 01 2023, 14:32:18
Citaat van: matizje op di 20 12 2022, 15:03:00
hoe zou zoiets eruit komen te zien in LIsp dan, ga ik me daarin verdiepen

de manier zoals ik het nu doe met SHIFT+rechter muis geeft dit weer in het commandoscherm:

MOVE
Select objects: 1 found
Select objects:
Specify base point or [Displacement] <Displacement>:
Specify second point or <use first point as displacement>:
>>Enter new value for ORTHOMODE <1>:
Resuming MOVE command.
Specify second point or <use first point as displacement>: _from Base point: <Offset>: 50


Is dit misschien wat je wil?
Maak een lsp-file van onderstaand, laad het in Autocad en start het commando "mm"
;;;Move Multiple
(defun c:mm  (/ ss1 L1 L2)
  (setq ss1 (ssget))
  (while (setq L1 (getpoint "\nWijs Basis point (1) aan: "))
    (setq L2 (getpoint L1 "\nWijs Referentie punt (2) aan: "))
    (command "MOVE" ss1 "" L1 L2)
  ) ;_ end of while
  (princ)
) ;_ end of defun