CADsite forum

AutoCAD => Autolisp => Topic gestart door: gery op ma 12 02 2018, 15:43:27

Titel: reload hatch patterns
Bericht door: gery op ma 12 02 2018, 15:43:27
Ik heb een heleboel tekeningen waarin "Amerikaanse" arceerpatronen geladen zijn. Ik zou deze Amerikaanse definities willen vervangen door Europese definities, naar analogie met het vervangen van de lijntype definities:(command "_.-linetype" "_Load" "*" "acadiso.lin" "")
(command "_.-purge" "_ltypes" "*" "_No")

Heeft iemand een idee hoe ik ditzelfde kan bereiken voor arceerpatronen?
Titel: Re: reload hatch patterns
Bericht door: roy_043 op di 13 02 2018, 13:42:56
Bij hatches werkt dit anders. Zij hebben ook een definitie maar deze wordt per hatch opgeslagen. Je zult dus alle hatches moet 'aflopen'.

Deze code werkt in BricsCAD:
; (UpdateHatchToMetric (vlax-ename->vla-object (car (entsel))))
(defun UpdateHatchToMetric (obj)
  (if (= achatchpatterntypepredefined (vla-get-patterntype obj))
    (vla-put-patternscale obj (/ (vla-get-patternscale obj) 25.4))
  )
)


Voordat de code wordt gebruikt moet de MEASUREMENT variabele goed zijn ingesteld (en wellicht moet je de tekening heropenen).

Om alle hatches te wijzigen kun je met vlax-for alle blocks en per block alle geneste objecten aflopen. Ik neem aan dat dit een gekende werkwijze is.
Titel: Re: reload hatch patterns
Bericht door: gery op di 13 02 2018, 21:06:28
Bedankt voor je antwoord Roy, ik ga jouw code eens bestuderen en proberen te verwerken in een loop.

Edit: de code werkt voor individuele hatches, nu nog verwerken in een iteratie.
Titel: Re: reload hatch patterns
Bericht door: EddyBeerke op wo 14 02 2018, 11:36:54
Acad leest gewoon een *.pat bestand waar de definitie in staat.
MEASUREMENT en MEASUREINIT beide op 1 zetten.
Dan kijkt acad alleen naar de Metric instellingen.

Citaat van: roy_043 op di 13 02 2018, 13:42:56
; (UpdateHatchToMetric (vlax-ename->vla-object (car (entsel))))
(defun UpdateHatchToMetric (obj)
  (if (= achatchpatterntypepredefined (vla-get-patterntype obj))
    (vla-put-patternscale obj (/ (vla-get-patternscale obj) 25.4))
  )
)

Met deze code (die werkt ook in Acad) wijzig je dus alleen de schaal van een een arcering met de factor 25.4
Wel handig natuurlijk  :vreegoe:

Al met al is het dus gewoon de schaal aanpassen van de arceringen, mits je de benodigde *.pat bestanden hebt, anders lukt dat niet.
Ik vind het nog steeds een tekortkoming van Autodesk dat de custom arceerpatronen (*.pat) niet met een e-transmit mee gestuurd worden en dus bij de "Include options" staan (hiet staat bv wel de "[] Include fonts").
Titel: Re: reload hatch patterns
Bericht door: gery op wo 14 02 2018, 12:27:38
Citaat van: EddyBeerke op wo 14 02 2018, 11:36:54
Citaat van: roy_043 op di 13 02 2018, 13:42:56
; (UpdateHatchToMetric (vlax-ename->vla-object (car (entsel))))
(defun UpdateHatchToMetric (obj)
  (if (= achatchpatterntypepredefined (vla-get-patterntype obj))
    (vla-put-patternscale obj (/ (vla-get-patternscale obj) 25.4))
  )
)

Met deze code (die werkt ook in Acad) wijzig je dus alleen de schaal van een een arcering met de factor 25.4.
Op het moment dat je de schaal van een arcering in de tekening aanpast, wordt ook automatisch de definitie van het betreffende arceerpatroon uit het arceerpatroon-definitiebestand van het gekozen eenhedenstelsel ingelezen. Het eenhedenstelsel kies je a.h.v. systeemparameter "measurement" (wordt bewaard in de tekening). Systeemparameter "measureinit" (wordt bewaard in het register) heeft daarop geen invloed.
Titel: Re: reload hatch patterns
Bericht door: bart op wo 14 02 2018, 13:58:19
zijn de tekeningen verders wel iso?
of zijn ze ook  in inch getekend?

Als dat laatste het geval is kan je ze dan niet in zijn geheel inserten in een iso template
als alles goed staat ingesteld moet het omzetten dan vanzelf gaan incl. arceringen.


Titel: Re: reload hatch patterns
Bericht door: roy_043 op do 15 02 2018, 11:27:55
Citaat van: bart op wo 14 02 2018, 13:58:19... vanzelf gaan incl. arceringen.
Een test met BricsCAD laat zien dat dit niet helemaal het geval is. De 'imperial' arcering wordt correct weergegeven maar heeft nog steeds een andere definitie.
Als in de voorbeeldtekening het block wordt geëxplodeerd zijn er twee arceringen in de tekening, één met een schaal van 254 en de ander met een schaal van 10, terwijl ze er identiek uitzien.
Titel: Re: reload hatch patterns
Bericht door: gery op do 15 02 2018, 11:51:02
Citaat van: roy_043 op do 15 02 2018, 11:27:55
Citaat van: bart op wo 14 02 2018, 13:58:19... vanzelf gaan incl. arceringen.
Een test met BricsCAD laat zien dat dit niet helemaal het geval is. De 'imperial' arcering wordt correct weergegeven maar heeft nog steeds een andere definitie.
Als in de voorbeeldtekening het block wordt geëxplodeerd zijn er twee arceringen in de tekening, één met een schaal van 254 en de ander met een schaal van 10, terwijl ze er identiek uitzien.
Ook in AutoCAD 2012 werkt dit zo, dus de arceringen worden niet automatisch omgezet bij het inserten in een ISO template.
De arceerpatroondefinitie wordt dus per arcering bewaard, in tegenstelling tot lijnen die telkens één en dezelfde lijntypedefinitie gebruiken. Twee verschillende principes dus.