CADsite forum

AutoCAD => Autolisp => Topic gestart door: AdenRob op di 01 05 2012, 14:17:51

Titel: Lisp selecteren objecten in blocks "nested items" [OPGELOST door Roy_043]
Bericht door: AdenRob op di 01 05 2012, 14:17:51
Beste AutoCad gebruikers,

Wij zijn de laatste maanden onszelf aan het verdiepen in Lips. Echter lopen wij tegen een, bij ons veel voorkomend, probleem aan.
Wij willen graag een lisp schrijven die ook naar objecten IN blocks kijkt.

VOORBEELD:
Wij zouden graag ALLE lijnen in de kleur rood willen selecteren. Dus ook de rode lijnen in blocks en blocks in blocks etc.

Kan iemand ons helpen om dit in een Lisp te verwerken :?: Zodat wij een selectie (setq) kunnen maken om hiervan vervolgens de eigenschappen te veranderen. Dit laatste valt (voor nu nog) buiten de vraagstelling.

Alvaste bedankt!
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op di 01 05 2012, 16:02:41
Wat jullie willen gaat het gemakkelijkst met de vl* functies. Zie bijgevoegd voorbeeld. De functie GetAllRedLines retourneert een lijst met objecten. Deze lijst kun je m.b.v. mapcar of foreach doorlopen.
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op wo 02 05 2012, 08:33:53
Oops: ik was (vl-load-com) vergeten. Bijgevoegd de verbeterde versie.
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: AdenRob op wo 02 05 2012, 15:07:25
Citaat van: roy_043 op wo 02 05 2012, 08:33:53
Oops: ik was (vl-load-com) vergeten. Bijgevoegd de verbeterde versie.

Best Roy,

Bedankt voor de hulp! :vreegoe:
Helaas zijn wij nog niet zo bekend met VL* functies. Maar als dit de manier is om alle, in dit voorbeeld, rode lijnen te selecteren dan zullen we ons hier in moeten gaan verdiepen.
Als we het goed begrijpen dan kunnen we VL* functies combineren met Lisp functies?
Heb je misschien een voorbeeld waarin een lijst wordt doorlopen met mapcar of foreach?

Groeten AdenRob
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: EddyBeerke op wo 02 05 2012, 15:34:25
In de help staan voorbeelden voor het gebruik ervan!
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op wo 02 05 2012, 16:33:40
http://www.autolisp-tutorial.mapcar.net/listen4.htm
http://www.autolisp-tutorial.mapcar.net/listen6.html
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: AdenRob op di 08 05 2012, 16:26:44
Citaat van: roy_043 op wo 02 05 2012, 16:33:40
http://www.autolisp-tutorial.mapcar.net/listen4.htm
http://www.autolisp-tutorial.mapcar.net/listen6.html

@Roy: Het lukt ons helaas niet om jouw handleiding om te zetten naar een praktijk voorbeeld.

De afgelopen week hebben wij ons verder verdiept in het werken met Lisp en VL* functies.
Helaas zijn we er nog niet helemaal uit hoe we een lisp kunnen schrijven die doet wat wij willen.  Of beter gezegd; Hoe wij de lisp van roy_043 kunnen combineren met andere commando's.

In de bijlage hebben we onze voorbeeld DWG en LISP toegevoegd. Hierin is het de bedoeling dat alle objecten die rood zijn (dus ook de bylayer objecten welke in een laag met de kleur rood staan), d.m.v. één handeling allemaal een lineweight krijgen van 2mm.

De bijgevoegde lisp doet al gedeeltelijk wat wij willen. Echter werkt deze niet voor objecten in blocks en voor de objecten bylayer die toch rood zijn. We zouden deze dus graag willen combineren met de lisp van roy_043.

Wie kan ons hier verder mee kunnen helpen?
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op wo 09 05 2012, 10:44:00
@AdenRob

De test dwg zit vreemd in elkaar.
De eigenschappen van de losse elementen komen niet overeen met die van de elementen in de blocks. Ondanks de sterke suggestie dat dit wel zo is. Er is bij de geneste elementen sprake van color and lineweight ByBlock.

Wat is jullie bedoeling?
Voorbeeld:
Een block reference heeft color ByLayer en staat op de laag "test laag". Deze laag is rood, dus volgens de omschrijving moet deze block reference lineweight 200 krijgen. Maar in dit block zit een lijn met de kleur geel. Deze lijn heeft lineweight ByBlock en krijgt daarmee gewenst/ongewenst ook lineweight 200.

Ad en Rob, maken jullie het niet veel moeilijker dan nodig is?
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: AdenRob op do 10 05 2012, 13:46:45
Beste Roy,

We hebben naar aanleiding van jouw (terechte kritische) reactie, goed nagedacht en de volgende conclusie getrokken. Het bijgevoegde voorbeeld met de vraagstelling is  inderdaad niet helemaal eenduidig.

Hieronder onze aangepaste vraagstelling.

Wij willen dat de Lisp het volgende kan;
ALLE objecten zoals (P-)lines, arc’s, circles, teksten, blocks inclusief ALLE objecten in blocks die wij een kleur gegeven hebben (dus niet “by layer”), zoals in ons voorbeeld rood, dienen een lineweight te krijgen van 2,0mm.

Weet jij misschien hoe wij onze Lisp hierop aan kunnen passen?
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op do 10 05 2012, 15:27:12
... Dus ongeacht welke "gegeven" kleur (1, 2, ..., ByBlock) wordt het lineweight van de objecten 2.0mm. Alleen objecten met een kleur ByLayer worden niet aangepast en behouden hun huidige lineweight. Begrijp ik het zo goed?
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: AdenRob op do 10 05 2012, 16:54:04
Citaat van: roy_043 op do 10 05 2012, 15:27:12
... Dus ongeacht welke "gegeven" kleur (1, 2, ..., ByBlock) wordt het lineweight van de objecten 2.0mm. Alleen objecten met een kleur ByLayer worden niet aangepast en behouden hun huidige lineweight. Begrijp ik het zo goed?

Je begrijpt het gedeeltelijk goed. In principe is het de bedoeling dat alle objecten welke de "gegeven" kleur rood (color 1) hebben allemaal een lineweight van 2,0mm krijgen. Met de kleur ByLayer hoeft niks gedaan te worden.

Uiteraard is het later de bedoeling dat we alle kleuren die wij gebruiken gaan koppellen aan een bepaalde lijndikte. Maar als het nu vast voor de kleur rood werkt dan hebben we een mooi voorbeeld om mee verder te werken. Dus uiteindelijk zal het straks zo zijn dat de kleur ByLayer geen lineweight heeft en de rest van alle gebruikte kleuren wel.

Alvast bedankt!
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op do 10 05 2012, 18:25:00
Zie bijlage.
Er zijn twee voorbeeldfuncties:
C1_To_W200
ChangeMultiple
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: AdenRob op di 15 05 2012, 15:27:08
Citaat van: roy_043 op do 10 05 2012, 18:25:00
Zie bijlage.
Er zijn twee voorbeeldfuncties:
C1_To_W200
ChangeMultiple

Roy geweldig !!!  :vreegoe: :vreegoe: :vreegoe:
De Lisp werkt perfect voor hetgeen wat we gevraagd hebben!  :D

In verband met voortschrijdend inzicht, zou het beter zijn ALLE objecten in blocken (en blocken in blocken) in te stellen op het volgende;
De color instellen op byblock, (maar wel NA EERST het doorlopen van JOUW geweldige lisp).
De linetype instellen op byblock MITS deze staat ingesteld op  bylayer.
De lineweight instellen op byblock MITS deze op bylayer staat. (zodat jouw de toegekende lineweight middels jouw lisp gehandhaafd blijft.)

Op deze manier kan men een dwg, geheel of gedeeltelijk, zwart als ook eenvoudig in een kleur plotten, zonder een woud aan verschillende ctb's, met behoud van de juiste lijndiktes en volgens het principe WYSIWYG!

Onze vervolg vraag is, kan jij hierop deze lisp aanpassen? Onze kennis is hiervoor helaas nog te beperkt. Wij zijn al lang op zoek naar deze werkmethode en wij hopen dat we hiermee vele mede cadgebruikers op een idee gebracht hebben!
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op di 22 05 2012, 13:39:29
@AdenRob:

Bijgevoegd een aangepaste versie van de lisp.

Wat jullie misschien niet weten over blocks:
- Ook de losse objecten in model space en paper space staan in een block.
- Maatvoeringen bevatten anonieme blocks.
- Er zijn nog andere anonieme blocks, zo bevat elk table object een anoniem block.
In mijn voorbeeldtekening heb ik 1 block, "App" (2 wanden in een T-vorm), zelf gemaakt. Maar toch bevat deze tekening de volgende blocks:
  "*Model_Space"
  "*Paper_Space"
  "*Paper_Space0"
  "App"
  "*D2"
  "*D3"
In de huidige opzet bewerkt de lisp alle objecten in alle blocks (incl alle MS- en PS-blocks en incl. alle anonieme blocks).
Het is de vraag of jullie dat willen.

Volgens mij is dit de volgende schrede op het pad van jullie inzicht:
http://ww3.cad.de/foren/ubb/uploads/marc.scherer/ProStb.pdf (Engelse tekst).
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: AdenRob op vr 25 05 2012, 22:44:21
Beste Roy,

Wat een geweldige Lisp  :vreegoe: :vreegoe: :vreegoe:

Chapeau!!!

In het persoonlijke bericht hadden we aangegeven dat we de Lisp nog uitvoerig zouden testen. Hierbij onze reactie.

De Lisp doet precies wat wij willen. :D Echter geeft de Lisp nog wel de volgende foutmelding: “; error: Automation Error. Object was erased”. Deze foutmelding komt voor als er maatvoering in de tekening aanwezig is. Zie bijgevoegde voorbeeldtekening.

Wanneer we de Lisp testen in de “Visual Lisp Editor” dan krijgen wij dezelfde melding. De Lisp blijft dan vervolgens in z’n loop hangen. Wanneer we de Visual Lisp editor af willen sluiten (om uit de loop te komen) dan krijgen we deze melding; “Reset break loop to close IDE?”.
De Lisp verbouwd echter wel de maatvoering op de juiste manier. Is er een mogelijkheid om deze foutmelding te voorkomen?

Ook lopen wij tegen het probleem aan dat de lisp in de meeste tekeningen voor 99% werkt. Een aantal lijnen in blocks worden niet juist verbouwd. De kleur van deze lijnen wordt niet ByBlock.
Wanneer we de tekening in zijn geheel kopiëren en plakken in een "leeg blad" oftewel drawing 1, dan is dit probleem opgelost. Betekent dit dat onze tekening niet helemaal schoon is, of er een setting anders ingesteld dient te worden?

Ps we weten inderdaad niet dat losse objecten in blocks staan. Op wat voor manier kan men deze “anonieme” blocks zien? Wel weten we als er b.v. gemaatvoerd is in een dwg er vele tijdelijke blocks gemaakt worden, maar deze kunnen eenvoudig verwijderd worden met purge.

PPs het verschil tussen stb en ctb hebben we in het verleden  al een uitvoerig tegen het licht gehouden. Wij blijven, (voorlopig, zeg nooit nooit) bij ctb vanwege het principe van WYSIWYG.

Groeten AdenRob
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op di 29 05 2012, 14:38:03
Beste Ad en Rob,

Bijgevoegd: Objects_ChangeLineweightAndMore_20120529.lsp

Opmerkingen:

1.
"Object was erased"...
Ik heb een (vlax-erased-p) controle ingebouwd. Ik hoop dat het probleem daarmee verholpen is. Blijkbaar (?) worden in Autocad tijdens het proces objecten gewist. Mogelijk ligt dat aan annotieve maatvoeringen. Bricscad ondersteunt deze niet.

2.
Sommige objecten worden niet gewijzigd...
Mijn eerste gedachte was dat het hier om old-style polylijnen en de variabele PLINETYPE zou gaan. Maar dat is bij nader inzien toch onwaarschijnlijk. Om dit probleem op te lossen moeten we deze objecten dus nader bestuderen.
Copy/paste onderstaande regels een voor een naar de commando regel, selecteer beide keren hetzelfde geneste object dat niet goed is gewijzigd, en geef de resultaten door:
(vlax-dump-object (vlax-ename->vla-object (car (nentsel))) T)
(entget (car (nentsel)) '("*"))

3.
Anonieme blocks "zien"...
Ik heb de functie (GetAllBlockNames) toegevoegd. Hiermee kun je de namen van alle blocks opvragen.

Groet, Roy.
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: AdenRob op wo 06 06 2012, 16:34:35
Beste Roy,

Bedankt voor je Lisp! SUPER! GEWELDIG!

We hebben bij het testen van de Lisp zorgvuldigheid betracht.
Hij werkt nu vrijwel helemaal naar behoren. Het is echter wel opgevallen dat de lisp wat trager werkt dan voorheen, van eerst enkele seconden naar nu enkele minuten (bij zware projecten), maar nu verbouwd hij wel ALLE blocks en geeft geen foutmelding meer!

Bij punt 2 in jouw voorgaande bericht vroeg je om de oude lisp uit te voeren en dan 2 commando’s te doorlopen over hetgeen wat niet goed verbouwd werd. Dit hebben we gedaan. Zie hiervoor bijgevoegd tekstbestand. Hopelijk geeft deze informatie de informatie die jij zoekt.

Wij zijn er achter gekomen dat de lisp NIET kijkt naar kleuren van de tekst in een attribute. Wanneer een attribute bijvoorbeeld in de kleur rood getekend staat, maar de tekst is  groen dan blijft de kleur na het uitvoeren van de lisp toch groen i.p.v. ByBlock. Wanneer we de attribute vervolgens synchroniseren dan wordt de tekst wel ByBlock. Dit betekent dat we al onze attributes moeten synchroniseren na het uitvoeren van de lisp. Kan dit misschien eenvoudiger?

Bij het uitgebreid testen van de laatste lisp zijn we er achter gekomen dat we een denkfout hebben gemaakt bij onze vraagstelling. Namelijk; niet alle objecten dienen namelijk ByBlock gemaakt te worden. We hebben namelijk enkele kleuren toegekend die altijd in KLEUR geplot moeten worden. Is het mogelijk om in de lisp een uitzondering te maken voor een aantal gedicteerde kleuren, zodat deze niet ByBlock gemaakt worden. Deze kleuren behoeven ook geen lijndikte (daar deze kleuren in de ctb staan als plotten default). Deze mogen dus eigenlijk helemaal buiten de lisp gelaten worden…

Om bovenstaand te verduidelijken hebben we de  voorbeeldtekening uitgebreid. De objecten die nu nog niet juist verbouwd worden, na het uitvoeren van de Lisp, staan links onder op de tekening.

Het zou bijzonder fijn zijn als deze twee punten nog verwerkt konden worden in de lisp. We hebben een de testtekening aangepast en bijgevoegd als bijlage.
In onze optiek kan het niet anders Roy dan dat jouw Lisp op handen gedragen gaat worden!

Met vriendelijke groet,
AdenRob
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op do 07 06 2012, 09:46:59
Beste Ad en Rob,

Bijgevoegd: Objects_ChangeLineweightAndMore_20120606.lsp

Opmerkingen:

1.
Trager...
Blijkbaar is de (vlax-erased-p) code niet erg snel. Ik heb in de lisp een alternatief voor deze code opgenomen. In het bestand is aangegeven wat je moet aanpassen om deze alternatieve code te activeren. Maar ik weet niet of het veel snelheidswinst zal opleveren.

2.
Sommige objecten worden niet gewijzigd.
Het lijkt erop dat deze objecten wel zijn gewijzigd, maar dat een "regen" nodig is om deze wijziging te tonen. Ik heb in ChangeMultiple (vla-regen) toegevoegd. Maar jullie zullen begrijpen dat een "regen" het programma niet sneller zal maken...

3.
Attributen worden niet aangepast.
Goed gevonden. Deze nieuwe versie maakt gebruik van een functie uit mijn functie-bibliotheek: (KGA_Block_ObjectListNested). Hiermee moet dit probleem opgelost zijn.

4.
Bepaalde kleuren moeten worden overgeslagen.
Om dat mogelijk te maken heeft de functie (Objects_ChangeLineweightAndMore) een extra argument gekregen: aciColorSkipList.

Groet, Roy.
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: AdenRob op do 07 06 2012, 16:00:57
Beste Roy,

Roy, Roy Roy, GEWELDIG!!!  :ole: :ole: :ole:
We zijn echt onder de indruk van jouw lisp kennis!
GEWELDIG :!:
Hierbij onze reactie na nog wat testen met verschillende tekeningen.

Citaat van: roy_043 op do 07 06 2012, 09:46:59
1.
Trager...
Blijkbaar is de (vlax-erased-p) code niet erg snel. Ik heb in de lisp een alternatief voor deze code opgenomen. In het bestand is aangegeven wat je moet aanpassen om deze alternatieve code te activeren. Maar ik weet niet of het veel snelheidswinst zal opleveren.

Wij hebben het alternatief voor de (vlax-erased-p) code getetst. Dit werkt fantastisch. Het levert een tijdwinst van 50% op bij een project van ruim 4MB.

Citaat van: roy_043 op do 07 06 2012, 09:46:59
3.
Attributen worden niet aangepast.
Goed gevonden. Deze nieuwe versie maakt gebruik van een functie uit mijn functie-bibliotheek: (KGA_Block_ObjectListNested). Hiermee moet dit probleem opgelost zijn.

Het is geweldig dat je de attribute aanpassing hebt kunnen inbouwen!

Citaat van: roy_043 op do 07 06 2012, 09:46:59
4.
Bepaalde kleuren moeten worden overgeslagen.
Om dat mogelijk te maken heeft de functie (Objects_ChangeLineweightAndMore) een extra argument gekregen: aciColorSkipList.

Roy, geweldig dat sommige kleuren gehandhaafd kunnen blijven! Dit biedt voor ons ontzettend veel mogelijkheden!

Citaat van: roy_043 op do 07 06 2012, 09:46:59
2.
Sommige objecten worden niet gewijzigd.
Het lijkt erop dat deze objecten wel zijn gewijzigd, maar dat een "regen" nodig is om deze wijziging te tonen. Ik heb in ChangeMultiple (vla-regen) toegevoegd. Maar jullie zullen begrijpen dat een "regen" het programma niet sneller zal maken...

Wij zijn bij het testen nog tegen iets aangelopen. Wanneer een Mtext uit verschillende kleuren bestaat dan wordt deze niet omgebouwd naar ByBlock. Is het mogelijk om deze ook helemaal ByBlock te maken?

Voor zowel maatvoering als multileaders kunnen ook veschillende kleuren toegepast wroden. Hierbij kunnen extension lines en leaders in een andere kleur getekend zijn dan de text ervan, zodat deze dunner afgedrukt worden. Zouden deze lijnen ook naar de kleur ByBlock vertaald kunnen worden, waarbij wel een lineweight wordt toegekend?
Dit zou echt super zijn!

Verder hebben we nog iets ontdekt. De Lisp geeft een foutmelding als er een block met een attribute in zit waarbij de setting "constant" is aangevinkt. De Lisp geeft dan een foutmelding "; error: bad argument type: VLA-OBJECT nil". Is dit probleem bij jou bekend? En is dit misschien ook op te lossen? Wij vinken deze variabele normaal gesproken niet aan, maar het kan zijn dat dit wel voor komt bij oude (vervuilde) tekeningen.

Voor alle duidelijkheid hebben we onze voorbeeld tekening aangepast. Hierin staat alles verwerkt wat we hierboven hebben beschreven. Dit staat aan de rechter zijde van de tekening.

Nogmaals (alvast) heeeel veeeel dank!  :vreegoe: :vreegoe: :ole:

AdenRob
Titel: Re: Lisp selecteren objecten in blocks (nested items)
Bericht door: roy_043 op vr 08 06 2012, 14:54:32
Beste Ad en Rob,

Bijgevoegd: Objects_ChangeLineweightAndMore_20120608.lsp

1.
Uit reactie #13 (zie hierboven):
In de huidige opzet bewerkt de lisp alle objecten in alle blocks (incl alle MS- en PS-blocks en incl. alle anonieme blocks).
Het is de vraag of jullie dat willen...

Volgens mij is het nodig dat ik hier wat dieper op inga. Bij elke maatvoering hoort een anoniem block (de naam begint steeds met "*D") waarin alle onderdelen zitten die bij de maatvoering horen: lijnen, tekst, pijlen etc. De oude versie van het programma (20120606) past alle blocks aan, dus ook deze anonieme "dim" blocks. Hierdoor kan de illusie ontstaan dat ook de dimstyle wordt gewijzigd door het programma. Dat is niet zo. Als na het uitvoeren van het programma een bestaande maatvoering wordt gewijzigd, dan wordt door het CAD-programma een nieuw anoniem block gemaakt op basis van de ongewijzigde dimstyle. Hierdoor worden voor die maatvoering de wijzigingen aan de geneste onderdelen ongedaan gemaakt. En ook nieuwe maatvoeringen worden aangemaakt op basis van een ongewijzigde dimstyle.
Om aan deze verwarring een einde te maken, worden in de versie 20120608 van het programma objecten genest in maatvoeringen en tabellen niet meer gewijzigd. Om maatvoeringen aan te passen is het dus nodig om de bijbehorende dimstyle te wijzigen. Om te zorgen dat dimvar overrides daarbij niet "dwarsliggen" heeft de functie (Objects_ChangeLineweightAndMore) een extra argument gekregen: removeDimVarOverridesP.
Ook voor multileaders kan het beste de bijbehorende stijl worden gewijzigd.

2.
Mtext uit verschillende kleuren...
StripMtextv5-0b.lsp wordt veel gebruikt om Mtext formatteringen te verwijderen:
http://cadabyss.wordpress.com/

3.
Foutmelding bij een constant attribute...
Mijn bibliotheek-functie (KGA_Block_ObjectListNested) hield geen rekening met een block met uitsluitend constante attributes. Ik heb deze functie daarom gewijzigd.

Groet, Roy.
Titel: Re: Lisp selecteren objecten in blocks (OPGELOST door Roy_043)
Bericht door: AdenRob op wo 13 06 2012, 15:36:38
Beste Roy,

Wederom; GEWELDIG! Chapeau, petje af!

Citaat van: roy_043 op vr 08 06 2012, 14:54:32

Uit reactie #13 (zie hierboven):
In de huidige opzet bewerkt de lisp alle objecten in alle blocks (incl alle MS- en PS-blocks en incl. alle anonieme blocks).
Het is de vraag of jullie dat willen...

Volgens mij is het nodig ...........
Het aanpassen van de dimstyles is inderdaad een goed alternatief. Door het draaien van jouw laatste lisp worden alle lijnen die wij handmatig (bij het properties scherm) hebben gewijzigd terug gezet naar ByBlock. Hiermee zijn wij dik tevreden!

Citaat van: roy_043 op vr 08 06 2012, 14:54:32
Mtext uit verschillende kleuren...
StripMtextv5-0b.lsp wordt veel gebruikt om Mtext formatteringen te verwijderen:
http://cadabyss.wordpress.com/
De lisp Stripmtextv5-0b.lsp werkt inderdaad mooi om eigenschappen van Mtexten snel te veranderen. Echter zijn wij er wel achter gekomen dat deze lisp niet kijkt naar Mtexten in blocks! Misschien zouden ze eens contact met jou moeten zoeken ;)

Meerdere kleuren in één Mtext komen bij ons niet vaak voor. Dit gebruiken we wel als er in EEN tekstblok, een gedeelte van een tekst niet willen printen. (dus in een kleur zetten met een lijndikte van 0,0mm) en dit willen we dan ook zo houden. We kijken dan, na het draaien van jouw geweldige lisp, de Mtexten handmatig na.

Citaat van: roy_043 op vr 08 06 2012, 14:54:32
Foutmelding bij een constant attribute...
Mijn bibliotheek-functie (KGA_Block_ObjectListNested) hield geen rekening met een block met uitsluitend constante attributes. Ik heb deze functie daarom gewijzigd.
Het is super dat je de "constant" foutmelding óók nog hebt kunnen oplossen! GEWELDIG!

Roy, heeeeeeeel veeeeeeel dank namens ons! Je bespaard ons met deze lisp ontzettend veel tijdswinst en het belangrijkste van alles; nieuwe mogelijkheden volgens het principe WYSIWYG!  :ole: :ole: :ole:

Groeten Ad en Rob
Titel: Re: Lisp selecteren objecten in blocks "nested items" [OPGELOST door Roy_043]
Bericht door: AdenRob op vr 20 12 2013, 16:43:11
Dag Roy,

Wij werken al 1,5 jaar met heel veel plezier met de door jou gemaakte lisp! Het verbaast ons dat de lisp slechts 8 keer is gedownload.

Nu lopen we alleen tegen een probleem aan wat we helaas niet zelf opgelost krijgen. Sinds kort werken we met Xref’s. Jouw lisp verbouwd ook alle Xref’s. Is het mogelijk om dit uit te sluiten in jouw lisp?

We dachten dit zelf uit te kunnen voeren maar helaas krijgen we het niet voor elkaar. Onze lisp kennis schiet kennelijk nog tekort om zo’n complexe lisp als deze te begrijpen…

Zou je ons met deze (hopelijk relatief kleine) aanpassing willen helpen?

Met vriendelijke groet,
AdenRob
Titel: Re: Lisp selecteren objecten in blocks "nested items" [OPGELOST door Roy_043]
Bericht door: roy_043 op ma 23 12 2013, 16:24:27
Het uitsluiten van xrefs is inderdaad niet bijzonder moeilijk.
Bijgevoegd Objects_ChangeLineweightAndMore_20131223.lsp
Titel: Re: Lisp selecteren objecten in blocks "nested items" [OPGELOST door Roy_043]
Bericht door: AdenRob op ma 30 12 2013, 17:17:51
Beste Roy,

Bedankt voor het aanpassen van de lisp!  :vreegoe:
We zullen deze na onze vakantie aan onze standaard bureau lisp's toe gaan voegen.

Prettige jaarwisseling!  :pintje:

AdenRob
Titel: Re: Lisp selecteren objecten in blocks "nested items" [OPGELOST door Roy_043]
Bericht door: roy_043 op di 01 07 2014, 21:45:19
Nieuwe versie van Objects_ChangeLineweightAndMore n.a.v. opmerking in dit bericht: http://www.cadsite.be/smf/index.php?topic=5996.msg31359#msg31359.
Titel: Re: Lisp selecteren objecten in blocks "nested items" [OPGELOST door Roy_043]
Bericht door: roy_043 op wo 02 07 2014, 22:52:51
Nieuwe versie van Objects_ChangeLineweightAndMore n.a.v. opmerking in dit bericht: http://www.cadsite.be/smf/index.php?topic=5996.msg31365#msg31365.

; 20140702: (/= a msBlockObject) werkt klaarblijkelijk alleen in BricsCAD.
;           Is vervangen door (not (equal a msBlockObject)).
Titel: Re: Lisp selecteren objecten in blocks "nested items" [OPGELOST door Roy_043]
Bericht door: Reimer op wo 02 07 2014, 23:14:27
Ik wil alleen even zeggen dat het volgende prima werkt in autocad:
Command: (/= 1 2)
T

Dan zou (/= a msBlockObject) toch ook moeten werken?

Reimer
Titel: Re: Lisp selecteren objecten in blocks "nested items" [OPGELOST door Roy_043]
Bericht door: roy_043 op za 05 07 2014, 11:05:20
Citaat van: Reimer op wo 02 07 2014, 23:14:27
Ik wil alleen even zeggen dat het volgende prima werkt in autocad:
Command: (/= 1 2)
T
(/= 1 2) werkt op dezelfde manier in BricsCAD.
Maar er zijn gevallen waarbij je 'equal' moet gebruiken i.p.v. '='.
(equal '(0 1) '(0 1)) => T
(= '(0 1) '(0 1)) => nil

Blijkbaar kun je in AutoCAD voor het vergelijken van objecten alleen equal gebruiken.
Titel: Re: Lisp selecteren objecten in blocks "nested items" [OPGELOST door Roy_043]
Bericht door: Reimer op zo 06 07 2014, 09:27:45
Goed om te weten. Bedankt voor de uitleg.  :vreegoe:

Reimer