CADsite forum

AutoCAD => AutoCAD probleem => Topic gestart door: peter smith op vr 25 07 2014, 14:52:38

Titel: block snel selecteren
Bericht door: peter smith op vr 25 07 2014, 14:52:38

Beste allen,

Ik heb in mijn kozijntekening een vaste block (blocknaam: kozjinmerk) met attribute veelvoudig gebruikt. Als er een wijziging op een kozijnmerk komt, moet ik nu handmatig stuk voor stuk selecteren. En de attribute aanpassen via property. het handmatog selecteren is tijdrovend.

Vraag:
Hoe kan ik, deze blocks (met attribute), op een bepaalde inhoud snel selecteren?


Groeten,
peter smith
Titel: Re: block snel selecteren
Bericht door: hulpje op vr 25 07 2014, 14:58:15
Beste Peter,

Kijk eens naar het commando QSELECT.

Mvg. Richard
Titel: Re: block snel selecteren
Bericht door: peter smith op vr 25 07 2014, 15:39:51
Hoi beste hulpje,

via QSELECT kan ik geen inhoud van attribute selecteren.


Een voorbeeld:
ik wil bv alle kozijnmerken "A-02a" selecteren. Hoe kan ik snel selecteren?

Groeten,
peter
Titel: Re: block snel selecteren
Bericht door: roy_043 op za 26 07 2014, 12:54:57
Deze Lisp werkt in BricsCAD:
(defun c:MerkSelect ( / attContent ssOut)
  (vl-load-com)
  (sssetfirst nil nil)
  (if
    (and
      (/= "" (setq attContent (strcase (getstring T "\nMerk?: "))))
      (ssget "_X" '((0 . "INSERT") (2 . "kozijnmerk") (66 . 1)))
    )
    (progn
      (setq ssOut (ssadd))
      (vlax-for refObj (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
        (vl-some
          '(lambda (attObj)
            (if
              (and
                (= "KOZIJNMERK" (strcase (vla-get-tagstring attObj)))
                (= attContent (strcase (vla-get-mtextattributecontent attObj)))
              )
              (ssadd (vlax-vla-object->ename refObj) ssOut)
            )
          )
          (vlax-invoke refObj 'getattributes)
        )
      )
    )
  )
  (if (zerop (getvar 'cmdactive))
    (progn
      (sssetfirst nil ssOut)
      (princ)
    )
    ssOut
  )
)
Titel: Re: block snel selecteren
Bericht door: peter smith op zo 27 07 2014, 23:46:59
Weet je hoe ik deze lisp in een kale autocad moet invoeren?  :roll:
ik ben niet zo goed in lisp.
Titel: Re: block snel selecteren
Bericht door: roy_043 op ma 28 07 2014, 10:35:43
1.
Open Notepad.
2.
Kopieer alle code in het bestand.
3.
Sla op met de .lsp extensie.
4.
Gebruik bijvoorbeeld het _APPLOAD commando om het Lisp bestand te laden.
5.
Gebruik:
MerkSelect
Of:
'MerkSelect
Om het Lisp commando te starten.

Meer info:
http://www.jtbworld.com/lisp/acaddoc.htm (voor AutoCAD)
http://www.b-k-g.nl/loading-lisp-programs.html (voor BricsCAD)
Titel: Re: block snel selecteren
Bericht door: peter smith op di 29 07 2014, 21:34:47
Ik heb een lsp-bestand aangemaakt en in autocad geladen (zie kozijnmerk.jpg). De commando "merkselect" wordt ook herkend. Maar als ik de merk ingetypt heb, gebeurt er niet veel(zie bijlage commando merkselect). Heb ik iets fout gedaan?
Titel: Re: block snel selecteren
Bericht door: roy_043 op wo 30 07 2014, 11:08:59
Als MerkSelect om een merk vraagt dient een merk (bijv. A-02a) te worden ingevoerd.
MerkSelect is niet hoofdlettergevoelig.

Het Lisp-commando kan op twee manieren worden gebruikt:
1.
Er is geen AutoCAD commando actief:
De kozijnen met het ingevoerde merk worden 'gegript'.
2.
Er is een AutoCAD commando actief en dat commando vraagt om een selectie:
In dit geval moet 'MerkSelect (met apostrof) worden ingevoerd om het Lisp-commando te gebruiken.
De kozijnen met het ingevoerde merk worden toegevoegd aan de selectieset van het commando.
Titel: Re: block snel selecteren
Bericht door: roy_043 op ma 04 08 2014, 10:38:38
@ peter smith:
Werkt het 'programmaatje' ook in AutoCAD?
Titel: Re: block snel selecteren
Bericht door: peter smith op ma 04 08 2014, 23:19:52
Hoi roy_043,

Het werkt nog niet.  :oops: Ik durf eigenlijk ook niet meer te vragen wat ik fout heb gedaan. Daarom is het een beetje stil.

Wat ik gedaan heb:
1. ik heb de lisp-routine geladen dmv _appload
2. typen "merkselect" (zonder aanhalingstekens)
3. een kozijnmerk intypen (zoals bijgevoegd plaatje rechtsonder).

Maar daarna wordt niets geselecteerd.  :roll:
Ik heb een aantal keer geprobeerd. Zal het te maken, omdat ik een kale autocad-versie heb?  :(

Groeten,
peter
Titel: Re: block snel selecteren
Bericht door: roy_043 op wo 06 08 2014, 11:57:39
@ peter smith:
Er kunnen meerdere dingen spelen:
1.
Er wordt per ongeluk een spatie getypt als het merk wordt opgegeven.
2.
Het block heeft een andere naam gekregen.
3.
AutoCAD gaat iets anders om met de 'active selectionset'.

Bijgevoegd een alternatieve versie. Verbeteringen/wijzigingen:
1.
Deze versie kijkt niet naar de blocknaam. Hierdoor is het programmaatje meer algemeen te gebruiken.
2.
'Wildcards' (= jokertekens) kunnen worden gebruikt.
3.
De selectieset wordt op een andere manier benaderd.
4.
Het commando heet nu 'AttSelect'.

Probeer bij het testen te letten op onnodige spaties.
En probeer het commando ook eens uit 'binnen' een AutoCAD commando:
: SELECT
Select entities to include in set: 'attselect
Text to look for (wildcards possible): a-02*
<Selection set: 16454868>
Select entities to include in set:
6 found.
Entities in set: 6
Select entities to include in set:

In jouw screenshots valt op dat er tussen de tests iets wordt gedaan ('crossing', 'isoplane') wat is er dan aan de hand?