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 - Arjen

#1
Goedemorgen,

Ik heb een langsprofiel dat ik van dwg naar pdf wil plotten. Nu gaat het om een stuk van >500m, met een schaal van 1:100. Hierdoor wordt mijn tekenblad ca. 5,50m lang. Dat is voor de plotter geen enkel probleem, alleen als ik in mijn page setup manager ga en mijn blad wil verlengen tot deze lengte krijg ik de volgende melding:

"paper size greater than the max paper size the device can support dwg to pdf."

Maar dit is simpelweg dwgtopdf.pc3. Kan ik hier iets in veranderen om alsnog alles op 1 blad te proppen? Of moet ik dan een aparte plotfile oid importen om deze lengte wel te kunnen realiseren?

Mvg Arjen
#2
AutoCAD probleem / Re: Grote tekening opdelen
ma 16 10 2017, 12:15:13
Citaat van: EddyBeerke op do 25 05 2017, 00:46:47
Citaat van: Arjen op wo 24 05 2017, 15:29:51
Wacht, dit is wat ik bedoel:

Gebruikt één van jullie Infracadmap? Dan kan je een deel van de BGT van Nederland inladen (zie afbeelding). Zoiets wil ik, alleen dan voor mijn ondergrond.
Ja die gebruik ik. Zo heb ik heel Nederland de Esri-luchtfoto's... Is wel 23 Gb!
Als je zo iets wil hebben dan moet je met bv lisp gaan programmeren:
Klik in de tekening en hoppa! Daar staat je xref...
Hoop werk extra... Via een knopje de grid-xref laden is sneller gemaakt.

Zo, het is een poos geleden maar ik heb maar eens wat tijd gevonden om eraan te werken. Op zich werkt het principe wel, alleen als ik de grid xref inlaad, duurt dit nu een half uur, omdat autocad al die kleine xrefs ook inlaad.

Dat heeft dan bijna geen meerwaarde meer...
#3
AutoCAD probleem / Re: Grote tekening opdelen
wo 24 05 2017, 15:29:51
Citaat van: EddyBeerke op wo 24 05 2017, 08:55:49
Citaat van: Arjen op di 23 05 2017, 14:24:37
Maar stel, ik heb 12 verschillende projecten tegelijk lopen. Dan moet ik of 12x de ondergrond volledig op de server hebben staan, of 12x wijzigen welk deel ik wel of niet aan heb staan.
Het is niet nodig om hiermee dubbele bestanden te maken.
Het project staat in een project map (neem ik aan) maar die ondergronden kunnen dan in een "Opdrachtgever" of "Algemeen" map staan. En je haald dan daar de ondergronden op.
Zijn de tekeningen bv definitief, dan maak je een etransmit en zorg je ervoor dat de xrefs ook mee gaan.

Citaat van: Arjen op di 23 05 2017, 14:24:37
Kan ik niet een kaartdeel (bv 3A) selecteren, en dat deze dan wordt opgehaald en in de tekening wordt gekopierd?
Ja, dat kan:
In de xrefmanager klik je rechts op de xref en kies je voor "bind".
Dit gaat overigens wel een beetje tegen het idee van de vraag hierboven.
Je maakt immers nu wel een copy, maar het kan wel.

Je kunt ook de xref copieren en in de projectmap zetten, en dan gewoon die xref gebruiken. <- beter dan een xref binden.

Wacht, dit is wat ik bedoel:

Gebruikt één van jullie Infracadmap? Dan kan je een deel van de BGT van Nederland inladen (zie afbeelding). Zoiets wil ik, alleen dan voor mijn ondergrond.
#4
AutoCAD probleem / Re: Grote tekening opdelen
di 23 05 2017, 14:24:37
Citaat van: EddyBeerke op di 23 05 2017, 11:03:16
Nee, dit is niet moeilijk, het is gewoon ff wat werk om e doen.

Maak een xref met een grid (ruitjespatroon) van de afmetingen die jij wil hebben in bv de laag defpoints.
Zet daar de namen in van de (te maken) xrefs, ook in de laag defpoints.
BV: rijnummer-colomletter (net als in Excel) A-1, B-5 enz.

Knip de ondergrond-xref in delen en geef ze de juiste naam. <- Dit is het meeste werk!
Hierna zet je alle geknipte xrefs in de (grid) xref -> attach in laag 0 of in een andere laag die wél afgedrukt wordt. (De laag "Defpoints" wordt nooit afgedrukt, ook niet als je die laag zelf maakt)
Unload dan alle xrefs in deze grid-xref.

Plaats dan deze grid-xref in de tekening waar je een ondergrond in wil hebben.
Je kunt nu zien (als de laag defpoints aan staat) welke xref je wil hebben... laad die dan door reload.
Of kies in de xref manager, met de rechter muisknop, voor attach, dan kun je daarna de grid xref verwijderen en heb je alleen die ene xref over.

Maar stel, ik heb 12 verschillende projecten tegelijk lopen. Dan moet ik of 12x de ondergrond volledig op de server hebben staan, of 12x wijzigen welk deel ik wel of niet aan heb staan. Kan ik niet een kaartdeel (bv 3A) selecteren, en dat deze dan wordt opgehaald en in de tekening wordt gekopierd?

groet
#5
AutoCAD probleem / Grote tekening opdelen
di 23 05 2017, 10:02:17
Goedemorgen!

Ik heb een grote topografische kaart en deze importeer ik regelmatig als ondergrond voor mijn tekeningen. Echter wil ik deze liever niet in zijn geheel er continu onder hebben hangen. Ik kan deze wel verkleinen middels een xclip, maar vaak werkt dat toch niet helemaal lekker.

Ik zou liever zien dat ik van te voren een kader kan zetten/kiezen als ik de ondergrond als xref importeer. Is dit simpel te doen? Via een lisp? Of is dit serieus programmeer shizzel?

gr Arjen
#6
Citaat van: roy_043 op vr 10 02 2017, 14:55:12
Verbeterde versie...
De functie String_Subst kwam in een oneindige lus terecht als de nieuwe tekst de oude tekst bevatte.
(vl-load-com)

; (String_Subst "aabbaacc" "aa" "xx")   => "xxbbxxcc"
; (String_Subst "aabbaacc" "aa" "xxaa") => "xxaabbxxaacc"
(defun String_Subst (str old new / idx)
  (setq idx 0)
  (while (setq idx (vl-string-search old str idx))
    (setq str (vl-string-subst new old str idx))
    (setq idx (+ idx (strlen new)))
  )
  str
)

(defun TxtSelSubst (old new / ss)
  (if
    (setq ss
      (ssget
        "_X"
        (list
          '(-4 . "<OR")
            '(-4 . "<AND") '(0 . "MTEXT,TEXT") (cons 1 (strcat "*" old "*")) '(-4 . "AND>")
            '(-4 . "<AND") '(0 . "INSERT") '(66 . 1) '(-4 . "AND>")
          '(-4 . "OR>")
        )
      )
    )
    (mapcar
      '(lambda (enm / obj)
        (setq obj (vlax-ename->vla-object enm))
        (if (= "AcDbBlockReference" (vla-get-objectname obj))
          (foreach att (vlax-invoke obj 'getattributes)
            (vla-put-textstring att (String_Subst (vla-get-textstring att) old new))
          )
          (vla-put-textstring obj (String_Subst (vla-get-textstring obj) old new))
        )
      )
      (mapcar 'cadr (ssnamex ss))
    )
  )
)

(defun c:Test ( / doc)
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-endundomark doc)
  (vla-startundomark doc)
  (TxtSelSubst "aanbrengen" "aangebracht")
  (TxtSelSubst "Aanbrengen" "Aangebracht")
  (TxtSelSubst "AANBRENGEN" "AANGEBRACHT")
  (TxtSelSubst "herplaatsen" "herplaatst")
  (TxtSelSubst "Herplaatsen" "Herplaatst")
  (TxtSelSubst "HERPLAATSEN" "HERPLAATST")
  (TxtSelSubst "abc" "def")
  (TxtSelSubst "Abc" "Def")
  (TxtSelSubst "ABC" "DEF")
  ; ... etc.
  (vla-endundomark doc)
  (princ)
)


Geil! Tnx guys!
#7
Citaat van: EddyBeerke op do 09 02 2017, 10:22:28
Wat dacht je van dit:
(vl-load-com)

(defun TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(defun c:Test ()
  (TRC "dit is een tekstregel" "dit zijn meerdere woorden")
  ; ... etc.
  (princ)
)


Nogmaals... de string moet exact overeen komen om gevonden te worden... type-fouten zijn niet toegestaan

hahaha ja dat snap ik haha

Ik bedoel:

Als ik een tekening heb met 'aanbrengen betonverharding' en 'aanbrengen trottoirtegels' en 'aanbrengen trottoirband' en 'aanbrengen asfaltverharding' etc. Is het dan mogelijk in de lisp alleen het woord 'aanbrengen' te vervangen. Want als ik dus één van de bovenstaande voorbeelden heb, vervangt deze het woord niet, dan doet de lisp het niet.
#8
Citaat van: gery op do 09 02 2017, 10:57:06
Citaat van: Arjen op do 09 02 2017, 10:05:57
Zou het ook kunnen als er meerdere woorden in één tekst staan?
Zoals reeds eerder gezegd: "Werkt enkel voor volledige strings."

daarom vraag ik het ook  :wink:
#9
Citaat van: roy_043 op do 09 02 2017, 09:36:27
Ik denk dat je zoiets zoekt:
(vl-load-com)

(defun TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(defun c:Test ()
  (TRC "aanbrengen" "aangebracht")
  (TRC "herplaatsen" "herplaatst")
  (TRC "abc" "def")
  ; ... etc.
  (princ)
)


BRUUT! Superbedankt!

Zou het ook kunnen als er meerdere woorden in één tekst staan?
#10
Citaat van: gery op di 07 02 2017, 12:16:05
Citaat van: roy_043 op di 07 02 2017, 11:29:30
:shock:
(vl-load-com)

(defun c:TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(c:TRC "aanbrengen" "aangebracht")
(c:TRC "herplaatsen" "herplaatst")


hmm, heb blijkbaar nog veel te leren ;)

Hij geeft alleen nog steeds dezelfde error...
#11
Citaat van: gery op ma 06 02 2017, 21:11:17
ff voortgebreid op de aangeleverde code:

(vl-load-com)

(defun TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(TRC "aanbrengen" "aangebracht")
(TRC "herplaatsen" "herplaatst")


Werkt enkel voor volledige strings.

Na 'defun' heb ik nog C: gezet, krijg de volgende melding:

; error: too few arguments
#12
Citaat van: roy_043 op ma 06 02 2017, 13:48:07
@Arjen:
De code in jouw eerste post vervangt nochtans niet een substring. Heb je deze code ooit getest?

Ja! De lisp werkt perfect.
#13
Citaat van: jimpie op ma 06 02 2017, 12:48:04
Dit kan je toch perfect doen met FIND command

klopt! Maar dan kost het me 5 minuten. Ik wil het met één klik. (ik zei al eerder, this puur uit luiheidsredenen :p )
#14
Citaat van: EddyBeerke op ma 06 02 2017, 08:33:23
Nee.

hahaha oeps!

Nou, ik zou het nog een keer proberen:

Als ik een as-built tekening moet maken, heb ik overal door de ontwerp tekening leaders staan met teksten als 'aanbrengen betonverharding, asfaltverharding, klinkers' etc. Maar voor mijn as-built tekening wil ik hier hebben staan 'aangebracht' ipv 'aanbrengen' en 'herplaatst' ipv 'herplaatsen'.

En omdat dit altijd dezelfde teksten zijn die worden gewijzigd (aanbrengen, herplaatsen, nieuwe, plaatsen etc.), wil ik dit graag met 1 klik doen. Met het huidige script kan ik één woord veranderen. Dus ik wil graag dat mijn script de tekening doorzoekt, en overal waar 'aanbrengen' staat, veranderd in 'aangebracht'. 'herplaatsen' in 'herplaatst' etc.

#15
Citaat van: EddyBeerke op vr 03 02 2017, 15:32:46
Heb je hier iets aan?
(defun c:TRC_selectie ; = Text Replace for selected items text/mtext strings, pre-defined content
  (/ tss)(vl-load-com)
  (if (setq tss (ssget))
      (mapcar   '(lambda (j)
                     (vla-put-textstring (vlax-ename->vla-object j) "aangebracht"))
                     (mapcar 'cadr (ssnamex tss)))

)
   (princ)
)


Bedankt voor je moeite, maar nee dit zoek ik ook niet.

Als ik niet duidelijk was:

Met één klik:
woord a => woord b
woord c => woord d
woord e => woord f
woord f => woord g
woord h => woord i

snap je het?

groet