CADsite

  • zo 02 10 2022, 22:13:57
  • Welkom, gast
Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  

Nieuws:

Pagina's: [1]   Omlaag

Auteur Topic: block snel selecteren  (gelezen 5106 keer)

peter smith

  • regelmatige poster
  • ***
  • Offline Offline
  • Berichten: 45
    • Bekijk profiel
block snel selecteren
« Gepost 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
Gelogd

hulpje

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1082
  • Al jaren lang AutoCAD tekenaar met veel plezier!
    • Bekijk profiel
    • CADToppers.com
Re: block snel selecteren
« Reactie #1 Gepost op: vr 25 07 2014, 14:58:15 »

Beste Peter,

Kijk eens naar het commando QSELECT.

Mvg. Richard
Gelogd
HELAAS BESTAAT CADToppers.com niet meer
ACP-er (AutoDesk Certified Professional)

peter smith

  • regelmatige poster
  • ***
  • Offline Offline
  • Berichten: 45
    • Bekijk profiel
Re: block snel selecteren
« Reactie #2 Gepost 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
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1473
  • BricsCAD 18
    • Bekijk profiel
Re: block snel selecteren
« Reactie #3 Gepost 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
  )
)
Gelogd

peter smith

  • regelmatige poster
  • ***
  • Offline Offline
  • Berichten: 45
    • Bekijk profiel
Re: block snel selecteren
« Reactie #4 Gepost 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.
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1473
  • BricsCAD 18
    • Bekijk profiel
Re: block snel selecteren
« Reactie #5 Gepost 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)
« Laatst bewerkt op: ma 28 07 2014, 10:47:14 door roy_043 »
Gelogd

peter smith

  • regelmatige poster
  • ***
  • Offline Offline
  • Berichten: 45
    • Bekijk profiel
Re: block snel selecteren
« Reactie #6 Gepost 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?
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1473
  • BricsCAD 18
    • Bekijk profiel
Re: block snel selecteren
« Reactie #7 Gepost 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.
« Laatst bewerkt op: wo 30 07 2014, 11:11:42 door roy_043 »
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1473
  • BricsCAD 18
    • Bekijk profiel
Re: block snel selecteren
« Reactie #8 Gepost op: ma 04 08 2014, 10:38:38 »

@ peter smith:
Werkt het 'programmaatje' ook in AutoCAD?
Gelogd

peter smith

  • regelmatige poster
  • ***
  • Offline Offline
  • Berichten: 45
    • Bekijk profiel
Re: block snel selecteren
« Reactie #9 Gepost 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
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1473
  • BricsCAD 18
    • Bekijk profiel
Re: block snel selecteren
« Reactie #10 Gepost 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?
« Laatst bewerkt op: wo 06 08 2014, 12:08:09 door roy_043 »
Gelogd
Pagina's: [1]   Omhoog