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

Topics - Reimer

#1
Ik maak veel gebruik van het selecteren van het laatste object voor het plaatsen van arceringen. Sinds de installatie van Civil 3D 2022 lukt dit niet meer bij mij. Het commando geeft aan dat er iets is geselecteerd maar dit wordt niet weergegeven. Er wordt ook geen arcering geplaatst. Met Previous werkt het wel.
Herkent iemand dit probleem?

CiteerCommand: h HATCH
Pick internal point or [Select objects/Undo/seTtings]: s
Select objects or [picK internal point/Undo/seTtings]:l
1 found
Select objects or [picK internal point/Undo/seTtings]:
Command:

Groeten,
Reimer.
#2
Mijn collega gebruikt al enige tijd Bricscad V18. Bij het activeren van een layout tab krijgt hij steeds de melding:
Cached metafiles: [getal]
Reused metafiles: [getal]

Bij één tekening loopt dit getal inmiddels op tot meer dan 100.000. Het duurt enkele minuten voordat de layout op het scherm verschijnt. Dezelfde tekening werkt op een ander werkstation prima heb ik begrepen.

We komen er maar niet achter wat BricsCad hier doet en wat we er aan kunnen veranderen.
Kent iemand dit en is er een oplossing voor ons?

Groeten,
Reimer
#3
Beste,

Een collega heeft niet annotatief block gemaakt met daarin een attribuut die wel annotatief is.
Bij het maken van het block zijn 3 schalen aan het attribuut toegevoegd. Ik ontdekte dat het attribuut alleen de schaal krijgt toegewezen die actief is op het moment van invoegen van het block in de tekening.
Door te werken met AnnoAutoscale is het mogelijk om meer schalen aan het attribuut toe te voegen. Wanneer ik echter meerdere attributen heb dan kan ik op deze manier geen verschillende schalen per attribuut instellen.

Ik vraag me af of het mogelijk is om de annotatie schalen van objecten ín een block te beheren. Heeft iemand hier ervaring mee?

Groeten,
Reimer.
#4
Door problemen met zeer traag werkende tekeningen kwam ik op het volgende onderwerp:
https://forums.autodesk.com/t5/autocad-civil-3d-forum/performance-enhancement-tool/td-p/6528814

Wij werken met Civil3D en MAP3D 2015. Het duurde steeds vaker meer dan 2 minuten voordat een tekening was geopend op opgeslagen. Ook de layermanager en purge werkten erg traag.
De oplossing uit bovenstaande post heeft het probleem in een klap opgelost.
Eind van dit jaar gaan we over naar 2018. Maar voor iedereen die nog met R2014 t/m R2017 werkt kan het veel tijd en frustratie schelen.

Groeten,
Reimer
#5
AutoCAD probleem / objecten verdwijnen na UNDO
do 19 10 2017, 09:34:22
Wij werken met MAP en Civil3D 2015. Steeds vaker komt het voor dat na een UNDO actie een (p)line verdwijnt. Het object is ook echt verdwenen uit de tekening. Recover/audit helpt helaas niet. Meerdere collega's ervaren nu af en toe dit probleem.

Herkent iemand dit? Ik kan nog niets hierover vinden op internet.

Groeten,
Reimer
#6
Autolisp / Wblock als copy paste alternatief
ma 11 09 2017, 10:20:48
Ik maak veel gebruik van ctrl+c en ctrl+v. Nu merk ik dat dat op ons systeem steeds trager werkt, vooral bij het plakken. Ik heb ook wel eens gelezen dat iemand dacht dat er eerder errors in je dwg ontstaan wanneer je via het klembord van Windows kopieert. Daarom probeer ik een lisp te maken om via Wblock te kopiëren en plakken. Hieronder mijn eerste opzet.
Ik ben benieuwd wat anderen hier van vinden. Of iemand grote risico's ziet, of liever nog verbeteringen!

Voor het plakken (P00) ben ik vooral aan het zoeken naar een methode waarbij het wblock geëxplodeerd in de tekening komt (ook als deze op een gelockte laag ingevoegd wordt) en waarna de blockdefinitie weer verwijderd wordt. Purge werkt dan weer erg langzaam, vandaar dat ik een stukje visual-lisp van internet heb gebruikt.

(defun c:c00 ( / OLDECHO SS)
  (setq OLDECHO (getvar 'cmdecho))
  (setvar 'cmdecho 0)
;select objects:
  (or
    (setq SS (ssget ":L-i"));add preselected objects (exclude locked layers)
    (setq SS (ssget "_:L"));select objects (exclude locked layers)
  );_or
  (command);deselect SS
;check file and folder, execute wblock:
  (if SS
    (if (findfile "c:\\temp")
      (progn
        (command "_.ucs" "w")
        (if (findfile "c:\\temp\\cpblock.dwg")
          (command "_.wblock" "c:\\temp\\cpblock.dwg" "y" "" '(0 0) SS "");folder is found, block overwritten
          (command "_.wblock" "c:\\temp\\cpblock.dwg" "" '(0 0) SS "");forder is found, block created
        );_if blk exists
        (command "_.ucs" "p")
      );_progn
      (prompt "\De ingestelde map (c:\\temp) is niet gevonden! -EINDE-")
    );_if dir exists
    (prompt "\Geen objecten geselecteerd! -EINDE-")
  );_if SS
  (command "_.oops")
  (prompt "\nCOPY00, objecten zijn gekopieerd naar c:\\temp\cpblock.dwg. Gebruik P00 om te plakken.")
  (setvar 'cmdecho OLDECHO)
  (print)
);_defun


(defun c:p00 ( / OLDECHO BLK)
  (if (not (tblsearch "BLOCK" "cpblock"))
    (if (findfile "c:\\temp\\cpblock.dwg")
      (progn
        (setq OLDECHO (getvar 'cmdecho))
        (setvar 'cmdecho 0)
        (command "-insert" "c:\\temp\\cpblock.dwg")
        (command)
        (setvar 'insname "*cpblock")
        (command "ucs" "w")
        (command "-insert" "" '(0 0) "1" "0")
        (command "ucs" "p")
        (vl-load-com)
        (and (setq blk (tblobjname "block" "cpblock"))
          (vla-delete (vlax-ename->vla-object (cdr (assoc 330 (entget blk)))))
        );_and
        (setvar 'cmdecho OLDECHO)
        (prompt "P00 is gereed")
      );_progn
      (prompt "\nHet kopiebestand c:\\temp\\cpblock.dwg is niet gevonden. -EINDE-")
    );_if c:\\temp\\cpblock
    (prompt "\nHet block CPBLOCK bestaat al in de tekening. Verwijder deze eerst! -EINDE-")
  );_if cpblock
  (print)
);_defun


Groeten,
Reimer

#7
Ik ben al een tijdje bezig met een routine om geautomatiseerd meerdere afdrukken van een layout te plotten.
Omdat ik niet weet met welke plotter de gebruiker werkt wil ik eerst controleren of de plot-instellingen goed staan voordat ik begin met afdrukken.

Controle op het bestaan van de plotter en het ingestelde papier lukt: http://www.cadsite.be/smf/index.php?topic=6546.0

Waar ik nu op vast loop is het feit dat de gebruiker kan werken met een echte of een virtuele (pdf-) printer.
Bij een echte printer moet ik werken met:
(command "_.-plot" "n" "" "" "" "n" "n" "y")
Bij een virtuele printer met:
(command "_.-plot" "n" "" "" "" (FILENAME) "n" "y")

Kan iemand mij verder helpen? Ik moet dus zien te achterhalen of een printer echt of virtueel is. Ik ben al de hele dag aan het zoeken maar vindt nog geen oplossingsrichting.

Reimer
#8
Ik zou graag af en toe Bricscad willen gebruiken om mijn (autocad) lisproutines te testen in Bricscad.
Mijn collega werkt op kantoor met Bricscad. Ik werk elders met autocad. Kun je een Bricscad licentie exporteren / uitlenen? Of bestaat er een thuiswerk licentie?

Groeten,
Reimer
#9
Beste,

Ik wil een lisp-routine maken die controleert of de plotter en het ingestelde papier wel bestaan van een opgegeven layout-naam. Ik heb op veel websites visual-lisp code gevonden om dit te doen. Helaas heb ik zelf weinig kennis van visual-lisp. Het lukt om de plotter te controleren (zie code). Het lukt nog niet om te bepalen welk papier is ingesteld. Weet iemand hoe dit moet?
Verder kom ik de termen CanonicalMediaNames en LocalMediaNames tegen. Weet iemand wat dit betekent?


(defun c:checkplotter ( / GetPlotDevices LONAME LONAMEVL AD EXISTINGPLOTTERS PLOTTER)

  (defun GetPlotDevices (AD LONAME /)
    (vla-RefreshPlotDeviceInfo
      (vla-get-activelayout AD)
    )
    (vlax-safearray->list
      (vlax-variant-value
        (vla-getplotdevicenames
          (vla-item (vla-get-layouts AD) LONAME)
        )
      )
    )
  );_defun GetPlotDevices

  (setq LONAME (getstring "\nGeef de layoutnaam op: "))
  (setq LONAMEVL (vla-item (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) LONAME))
  (setq AD (vla-get-activedocument (vlax-get-acad-object )))
  (setq EXISTINGPLOTTERS (GetPlotDevices AD LONAME))
  (setq PLOTTER (vla-get-ConfigName LONAMEVL))
  (if (member PLOTTER EXISTINGPLOTTERS)
    (print (strcat "\nDe printer   " PLOTTER "   bestaat."))
    (print (strcat "\nDe printer   " PLOTTER "   bestaat NIET."))
  );_if
  (print)
);_defun


Groeten,

Reimer
#10
Op internet kwam ik de volgende code tegen:
(defun countback (steps / ms)
(vl-load-com)
(setq ms (vla-get-modelspace (vla-get-activedocument
(vlax-get-acad-object))))
(vlax-vla-object->ename (vla-item ms (- (vla-get-count ms) steps)))
)

https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/2nd-from-the-last-object-in-autocad-database/td-p/807274

Met (countback 2) krijg je het op een na laatste object uit de tekening.
Dit werkt alleen voor modelspace objecten. Helaas weet ik niets van visual lisp. Weet iemand of het mogelijk is om hetzelfde te doen voor alle objecten, dus ook in de layouts?

Reimer
#11
Beste allen,

Graag wil ik met zo min mogelijk werk trajectlijnen op een kruispunt tekenen (t.b.v. ontruimingstijden). Op het oog wil ik twee rechtstanden met daartussen een boog plaatsen. De boog moet een van de volgende waarden krijgen: 10,15,20,25,30 of 35 meter.
Twee lijnen en een fillet zijn de snelste methode wanneer ik ze in één keer op de juiste plek heb. Vaak moet ik echter schuiven met de lijnen om de best passende vorm te krijgen. Dan moet ik dus steeds de boog verwijderen en opnieuw maken.
Het bijgevoegde dynamische block doet eigenlijk al wel wat ik wil. Ik plaats het block en bewerk twee punten zodat ik de gewenste vorm krijg. Het enige probleem is dat de rechtstand verschuift wanneer ik de straal van de boog aan pas. Als het traject past explodeer ik het block om een pline over te houden.

Weet iemand of ik mijn block zo kan maken dat de boog echt als een fillet gaat werken?

Groeten,
Reimer
#12
Autolisp / waarom is er opeens COMMAND-S?
do 10 12 2015, 13:10:45
Ik krijg steeds meer te maken met lisp-routines die niet werken. Na wat zoeken kom ik op de functie COMMAND-S die vanaf R2015 blijkbaar nieuw is naast de COMMAND functie. Als ik het goed begrijp werken lisp-routines waarbij COMMAND is gebruikt in de *error* niet meer in alle gevallen.

Wat ik uit de help denk te hebben begrepen is dat COMMAND elke stap direct verwerkt in acad terwijl COMMAND-S eerst de hele functie verwerkt en alleen de uitkomst plaatst in acad.


;;onderstaande werkt wel:
(command "._line")
(command "2,2" "12.25,9" "")

;;onderstaande werkt niet:
(command-s "._line")
(command-s "2,2" "12.25,9" "")


Tot zover denk ik het te snappen. Nu weet ik alleen niet waarom dit in bestaande lisp-routines met de *error* fout zou gaan. Ik wilde voor het eerst sinds lange tijd BaBe weer eens gebruiken. Deze geeft echter de foutmelding:
Cannot invoke (command) from *error* without prior call to (*push-error-using-command*).
Converting (command) calls to (command-s) is recommended.


Is iemand bekend met het bovenstaande? Hoe moet ik omgaan met *error* en command-s?
Het blijkt trouwens dat de problemen bestaan in Civil3D2015 en niet in MAP2015 (terwijl deze uit dezelfde installatie komen). Ook MAPTRIM werkt niet meer in Civil, wel in MAP.

Reimer
#13
Ik wil graag in een lisproutine een tekst laten zien in het grafische scherm. Ik dacht dat ik hiervoor grtext nodig had, maar die werkt niet met het grafische scherm. Op de site van Lee Mac zie ik een voorbeeld van wat ik ongeveer wil, maar ik kan zijn code niet zo snel doorgronden. http://www.lee-mac.com/grtext.html. Op de een of andere manier zet hij blijkbaar een tekst om in vertors, die hij met grvecs op scherm laat zien.

Heeft iemand hier ervaring mee?

Reimer
#14
Is het mogelijk om ergens in mijn workspace bepaalde gegevens te laten tonen. Ik zit te denken aan bijvoorbeeld de systeemvariabele PLINETYPE, deze staat nog al eens verkeerd. Op deze manier kan ik in één oogopslag zien welke instellingen actief zijn.
Voorheen stond onderin het scherm de coordinaten van je muisaanwijzer weergegeven. Deze zie ik in acad 2015 niet meer (ik mis ze niet) maar dit is wel het principe waar ik aan zit te denken. Wellicht kan het via een toolbar.

Reimer
#15
Beste lispers,

op verzoek van collega's probeer ik een routine te maken waarmee ik een boog kan tekenen vanaf een (p)line, met een opgegeven radius. Ik vond op internet een stukje code waarmee ik de richting van de lijn kan bepalen op de opgegeven locatie. De functie werkt al wel, ik zou allen graag bij het selecteren van de lijn gebruik willen maken van de actieve OSNAP. Wat nu gebeurd is dat PT wordt bepaald door NEA op het geselecteerde object. Ik wil meestal uitgaan van END, maar het liefste van de OSMODE die door de gebruiker is ingesteld.

PS. Wat is de beste manier om er voor te zorgen dat alleen lijn-objecten worden geselecteerd? Ik heb wel verschillende mogelijkheden gezien, maar vraag me af wat de beste (kortste) is.

;Arc on (p)line
(defun c:AOL ( / RADIUS ESEL POL PT ANG PT2 ANG2 PCEN OLDSNAP)
  (prompt (strcat "Geef de radius <" (rtos (getvar "filletrad") 2 (getvar "luprec")) ">"))
  (setq RADIUS (getreal))
  (if (= RADIUS nil)
    (setq RADIUS (getvar "filletrad"))
    (setvar "filletrad" RADIUS)
  )

; \/ code van internet
  (vl-load-com)
  (setq
    ESEL (entsel "\nSelect een (poly)line: ")
    POL (car ESEL)
    PT (osnap (cadr ESEL) "nea"); use Osnap to ensure it's really ON the Polyline
    ANG
      (angle
        '(0 0 0)
        (vlax-curve-getFirstDeriv
          POL
          (vlax-curve-getParamAtPoint POL PT)
        ); end 1st deriv
      ); end angle & ang
  )
; /\ code van internet

  (setq PT2 (getpoint pt "\nGeef een zijde aan: "))
  (setq ANG2 (angle PT PT2))
  (if (minusp (sin (- (angle pt pt2) ang)))
    (setq PCEN (polar PT (- ANG (* 0.5 PI)) RADIUS))
    (setq PCEN (polar PT (+ ANG (* 0.5 PI)) RADIUS))
   )
  (setq OLDSNAP (getvar "osmode"))
  (setvar "osmode" 0)
  (command "_arc" PT "c" PCEN)
  (setvar "osmode" OLDSNAP)
)
#16
Autolisp / dialoogbox verwerken in lisp-code
di 20 05 2014, 14:57:35
Ik kom wel eens lisproutines tegen waarbij een dialoogbox gebruikt wordt zonder een dcl-file. Ik vermoed dat dit geregeld wordt doordat de lisproutine een (tijdelijk) dcl-bestand aanmaakt. Kan iemand dit bevestigen? Of is er een andere methode?

Reimer
#17
Ik heb eindelijk eens opgezocht hoe je met SSGET kunt werken met AND / OR. Helaas is het resultaat nog niet werkend.
Ik wil graag alle teksten selecteren die binnen bepaalde coordinaten liggen. Hiervoor heb ik het volgende bedacht.

(setq X1 20 Y1 20 X2 30 y2 30)
(setq H (ssget "_X" (list (0 . "TEXT")
                             (-4 . "<AND")
                                 (-4 . ">,>,*") (list 10 X1 Y1 0.0)
                                 (-4 . "<,<,*") (list 10 X2 Y2 0.0)
                             (-4 . "AND>")
                     );_list
        );_ssget
);_setq


Als resultaat krijg ik: Error: bad argument type: consp "TEXT"
Kan iemand mij vertellen wat er niet juist is aan deze code?

Reimer
#18
Ik ben een lisproutine aan het maken voor het bewerken van hoogtematen op basis van bestaande hoogtes. Nu wil ik de gebruiker vragen om een hoogtemaat op te geven Ã"F een (m)tekst te selecteren. Kan dit in één handeling?
Ik kan bij ENTSEL geen getal opgeven en bij GETREAL geen object selecteren.

Reimer.
#19
Ik heb ooit een lisproutine gezien die van plines de lengte geeft, gesorteerd naar rechtstand en stralen. Dit zou ik graag gebruiken voor het bepalen van hoeveelheden bandlijnen. Kan iemand mij aan zo'n lisp helpen?

Reimer
#20
Kan iemand mij helpen aan milieukundige symbolen? Ik moet een tekening voor een sanering samenstellen en wil graag beginnen met de juiste symbolen?

Reimer
FastFiber