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

#1
@ reimer, bedankt, deze oplossing heeft het juiste resultaat ;-)
#2
Nee gery,

ter verduidelijking : er is maar één routine en op het einde van de routine wil ik terug in acad werken maar 't zou handig zijn dat als de routine klaar is dat het item dan reeds in de selectie zit.

dus idd, als de gebruiker dan "select" en de global var invult werkt dit, maar deze laatste actie had ik graag nog geautomatiseerd => minder typwerk voor de gebruiker
#3
Ik heb een stukje code waarmee ik een bepaald item opzoek.
Ik zou graag op t einde van de routine dit item in een selectie nemen zodat de gebruiker er dan indien gewenst onmiddellijk mee aan de slag kan.
Ik heb de ent in een variabele blocksel zitten

(command "SELECT" blocksel "")

maar dit werkt niet..

echter in acad zelf

"select"
!blocksel


werkt wel ?
#4
heb je misschien een beetje meer van je code om te tonen, want er is niet veel zichtbaar...
#5
AutoCAD probleem / Re: Raster Design
vr 07 01 2022, 12:24:09
uw tiff staat normaal toch in modelspace en daar heb je nog geen papierformaten hé.

Daar gewoon uw tiff scalen en croppen zodat ie de juiste grootte heeft....

en in een layout uw papierformaat kiezen en met viewport van inhoud voorzien.
#6
ik zit nog niet met 2022,... maar misschien is de lisp in de bijlage een mogelijke oplossing :

er zitten drie commando's in die vooral zeer handig zijn als je met meerdere layouts in je tekening zit.

AVL : Alle Viewports Locken
AVU : Alle Viewports Unlocken
APSLT : in Alle PaperSpace omgevingen wordt LineType scale afgezet, zodat uw scaling dezelfde is als in modelspace

veel plezier ermee
#7
Autolisp / Re: Tandwiel tekenen
di 05 10 2021, 11:05:06
het programma heeft enkele getallen nodig (variabelen) om de tekening te kunnen maken zoals jij wilt
er had inderdaad wat meer duidelijkheid in de vragen kunnen zitten.
Weet je wat je als resultaat wenst te bekomen ?
probeer eens met enkele getallen : bvb 10/50/200/0.2
#8
Aangezien dit block niet symetrisch is, heb ik er een extra flipje ingestopt die de gebruiker toelaat om het schuine lijntje juist te plaatsen.

Geen echte oplossing maar toch...

Can't win them all
#9
Ik heb ontdekt dat het probleem zich voordoet bij cirkels en stukken van cirkels, dus gebruik ik nu gebogen polylines dan is dit probleem meestal weg ;-)
#10
AutoCAD probleem / Re: Blocken aanpassen
di 27 10 2020, 07:44:30
Er zijn verschillende manieren die ik gebruik afhankelijk van welke soort block ik wens up te daten,

Zowiezo beheer ik al mijn blocks in een aparte folder telkens als dwg op zich. (dit ter info)

1e - als het een 'simpele' block is (enkel getekende elementen en attributes) dan volstaat een redefine, dit kan via een lispje waar je een lusje schrijft rond onderstaande code om alle blocks die je wilt laten aanpassen te behandelen
          (command "-INSERT" (strcat bloknaam "=" fullfile) nil)
          (command-s "ATTSYNC" "N" bloknaam)

LET OP: als je attributen wijzigt of toevoegt dan zal dit ongewenste resultaten leveren en kan deze manier niet meer voldoende zijn.

2e - als het een 'complexere' block is (met dynamic en attrib en wat nog niet allemaal ;-) ) dan maak ik daar een
een ander soort lispje rond waarin ik alle parameters van de block uit de dwg haal :
* alle attrib's,
* alle dynamic properties
* alle block properties (positie,hoek, ...)

deze oude block verwijderen en een nieuwe block vanuit de lisp laten intekenen waarbij ik dan alle bijgehouden variabelen gebruik om deze geupdate block exact terug te plaatsen.

Hier heb je alle vrijheid om binnen het ontwerp van je block echt alles te veranderen. als je bvb een extra attribute toegevoegd hebt kan je bij het vervangen in je lisp de 'te verwijderen block' tonen aan de gebruiker en daar de vraag stellen wat de nieuwe attribute moet zijn.

Je moet hierbij wel code maken voor elke block specifiek.
Een extra optie is om de oude block te moven naar ergens ver weg, en eventueel te veranderen van laag, dan ben je deze niet onmiddellijk kwijt voor als het toch fout loopt.
Ook plaats ik de nieuwe blocks meestal in een layer nieuw met een opvallend kleurtje, zodat je makkelijk kan zien wat er overal vervangen is geweest.

Eens alles klaar kan je dit dan aanpassen naar de juiste layer en de gemovede blocks in een actie verwijderen.

Deze manier werkt goed, maar is natuurlijk een beetje codeerwerk, en je moet dus zelf uitmaken of het rendabel genoeg (hoeveel keer heb je dit nodig en voor hoeveel blocks) is om daar je tijd in te steken of niet.

3e - Een andere mogelijkheid is dat je
* uw slechte blocks verplaatst naar een lege locatie,
* daar met een vaste offset uw nieuwe blocks naast plaatst,
* via een copypastecopypaste lispje de attrib value's overbrengt
* deze nieuwe blocks terugplaatst

deze manier vereist geen codeerwerk en levert je vlugger resultaat, maar duurt langer bij grotere aantallen

Hier het copy - paste - cpoy - paste stukje code (een van mijn meest gebruikte stukjes code)
; this program let's u copy txt sequentially
; read txt write txt read write, read write....
;

(defun c:xFT (/ cntr ent atortxt modtxt txtormtxt dimortxt seldimt strdimedit el mt selatt )
(setvar "cmdecho" 0)
(setq cntr 0)
  (while (< cntr 10)
      (setq ent (nentselp "Select source Text: " ))
      (if ent
        (progn ;1
         (setq atortxt (cdr(assoc 1 (entget (car ent ))))) 
            (setq modtxt (nentselp "\n Select Text to modify: "))
            (if modtxt
              (progn ;2
                (setq txtormtxt (cdr(assoc 0 (entget (car modtxt ))))) 
                (cond
                  ((or (= txtormtxt "TEXT")(= txtormtxt "MTEXT"))
                    (progn ;3
                      (setq dimormtxt (cdr(assoc 42 (entget (car modtxt ))))) 
                      (if (/= dimormtxt nil)
                        (progn ;4
                          (setq seldimt (cdr (assoc -1 (entget (car modtxt )))))
                          (setq strdimedit (substr atortxt 5 (strlen atortxt)))
                          (command "dimedit" "n" strdimedit seldimt "")
                        ) ;progn4
                        (progn ;5
                          (setq el (entget (car modtxt )))         
                          (setq mt (subst (cons 1 atortxt) (assoc 1 EL) EL))
                          (entmod mt)
                        ) ;progn5
                      ) ;if
                    ) ;progn3
                  ) ;cond or
                  ((= txtormtxt "ATTRIB")
                    (progn ;6
                      (setq selatt (cdr (assoc -1 (entget (car modtxt )))))
                      (command "-attedit" "" "" "" "" selatt "v" "r" atortxt "")
                    ) ;progn6
                  ) ;cond or
                  (T (princ "\n Invalid Selection... "))
                ) ;cond
              ) ;progn2
            ) ;if
        ) ;progn1
      ) ;if
  );while
(princ)
) ;defun



#11
Autolisp / Re: pan to top or bottom
di 13 10 2020, 04:03:18
of gewoon dubbelklik op je scrollwiel,
dan staan boven en onderkant gelijk in één keer
#12
Ik heb een block die ik dynamisch wil flippen rond x-as en y-as
via 2 flip acties is dit geen probleem
één onderdeel van de te flippen objecten is een diagonale lijn die in een rechthoekje staat.
en deze lijn moet altijd van linksboven naar rechts onder getekend blijven staan.
en zou dus niet mogen gespiegeld worden tijdens deze flip actie's

heeft er iemand een idee hoe dit kan geregeld worden ?

alvast bedankt ;-)
#13
in de properties van autocad staan er idd cijfers en in lisp, de pos van de vectoren opvragen via lisp en daar dan zien dat er enkel 0-en na de komma staan

#14
Ik heb een 3dpolyline in een lambert coordinatenstelsel waar ik in de properties van autocad zelf tot 4 cijfers na de komma zie staan.

Maar eens ik diezelfde PL via lisp watch bekijk dan zijn alle coordinaten afgerond tot op de komma ?
Met dus afrondingsfout tot 50 cm als gevolg.

Dit is reeds zo nog voor ik er in lisp iets mee doe.
Ik vermoed dat er dus misschien ergens een sysvar verkeerd staat, maar 'k weet niet welkeen ;-s

Weet iemand hier een oplossing voor ?
#15
Ik heb een stuk lisp-code die een block wijzigt in een andere block.
hierdoor zijn de aansluitende lijnen te kort of te lang
ik heb deze vanuit lisp met lengthen laten aanpassen en dat lukt wel, maar de wijziging gebeurt langs de verkeerde kant?

ter info : ik heb de lijn geselcteerd d.m.v. een crossing 'ssget' langs de kant waar ie moet wijzigen

hoe kan ik dit oplossen zodat de juiste kant aangepast wordt?

alvast bedankt