FastFiber

mijn 1e macro

Gestart door matizje, di 20 12 2022, 09:50:21

Vorige topic - Volgende topic

matizje

#15
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

gery

#16
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?
AutoCAD 2020 - Windows 10

matizje

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.

gery

Ik vrees dat ik je niet helemaal begrijp.
AutoCAD 2020 - Windows 10

Reimer

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.

matizje

Reimer,

dat is 'm, het werkt.  BEDANKT!!!!!!!!!!!!!!!

matizje

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?

bart

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
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

matizje

het gaat om objecten(2 lijnen) die tegelijk verplaatst moeten worden op de zelfde vector

Reimer

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.

matizje

thx, het werkt nu naar behoren

bart

je kan je macro ook beginnen met select en can bijvoorbeeld een crossing dan is het aantal elementen flexibel
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

EddyBeerke

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


Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

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

FastFiber