Results 1 to 9 of 9

Thread: Liaison polyligne et surface/champ

  1. #1
    Member
    Join Date
    2011-07
    Posts
    30
    Login to Give a bone
    0

    Default Liaison polyligne et surface/champ

    Bonjour,
    Je découvre progressivement l'outil champ permettant de récupérer les informations d'une polyligne notamment dans l'usage des calculs de surface.
    toutefois, comment retrouvé, à l'inverse, la polyligne impliquée par le champs.
    imaginons j'ai créer un calcul avec des champs liés à plusieurs polylignes. je veux retrouver à quoi correspond mon calcul/polyligne, je ne trouve pas comment mettre en surbrillance la polyligne concernée.
    Merci d'avance.
    SB

  2. #2
    Member
    Join Date
    2011-07
    Posts
    30
    Login to Give a bone
    0

    Default Re: Liaison polyligne et surface/champ

    Bonjour,
    Aucune réponse ?
    Autocad permet-il de faire ce genre de chose ?
    Comment procédez-vous pour gérer vos surfaces de pièces ?
    Merci
    SB

  3. #3
    I could stop if I wanted to
    Join Date
    2002-08
    Posts
    231
    Login to Give a bone
    0

    Default Re: Liaison polyligne et surface/champ

    Bonjour,

    Il faut passer par les dictionnaires...
    Un petit outil en lisp trouvé je ne sais plus où (merci à l'auteur)

    Code:
    (defun c:fieldobject ( / en )
        (while
            (progn (setvar 'ERRNO 0) (setq en (car (nentsel "\nSelect Field: ")))
                (cond
                    (   (= 7 (getvar 'ERRNO))
                        (princ "\nMissed, try again.")
                    )
                    (   (eq 'ENAME (type en))
                        (if
                            (and
                                (wcmatch (cdr (assoc 0 (setq en (entget en)))) "*TEXT,ATTRIB")
                                (setq en (cdr (assoc 360 en)))
                                (setq en (dictsearch en "ACAD_FIELD"))
                                (setq en (dictsearch (cdr (assoc -1 en)) "TEXT"))
                                (setq en (cdr (assoc 360 en)))
                                (setq en (cdr (assoc 331 (entget en))))
                            )
                            (redraw en 3)
                            (princ "\nObject does not contain a Field.")
                        )
                    )
                )
            )
        )
        (princ)
    )
    Cela met en surbrillance (pas de sélection) l'entité référencée au champ sélectionné.
    Pour mettre en sélection, on pourrait remplacer:
    (redraw en 3)
    par
    (sssetfirst nil (ssadd en))

  4. #4
    Member
    Join Date
    2011-07
    Posts
    30
    Login to Give a bone
    0

    Default Re: Liaison polyligne et surface/champ

    Ouch ! merci beaucoup pour la réponse.
    Malheureusement je n'utilise pas les lisp.
    Comment puis-je utiliser ce script ? Faut-il le lancer à chaque projet ?
    Merci
    SB

  5. #5
    I could stop if I wanted to
    Join Date
    2002-08
    Posts
    231
    Login to Give a bone
    0

    Default Re: Liaison polyligne et surface/champ

    Comment puis-je utiliser ce script ?
    Pour simplement essayer, tu copies-colles tout le code directement en ligne de commande, une fois fait tu tapes simplement FIELDOBJECT sur ta ligne de commande.
    Si cela te convient tu copies-colles le code dans le bloc.note et tu enregistre avec l'extension lsp ex: "fieldobject.lsp" pour le conserver sur ton disque et pouvoir le charger.

    Faut-il le lancer à chaque projet ?
    Oui, mais il y a la solution de le charger automatiquement au démarrage.
    Tapes APPLOAD en ligne de commande, dans la boite de dialogue, cliques sur la valise et ajoute ton fichier lisp.

    Désolé pour la réponse un peu tardive.

  6. #6
    Member
    Join Date
    2011-07
    Posts
    30
    Login to Give a bone
    0

    Default Re: Liaison polyligne et surface/champ

    Bonjour,
    Merci pour cette réponse. J'avais réussi à créer le LSP, le charger, mais je ne savais pas comment le lancer, la ligne de commande fieldobject.
    Cela fonctionne bien mais c'est pas totalement ça malheureusement.
    J'utilise les surfaces dans un tableau autocad, ce qui me sert à calculer surface emprise, plancher, etc. Pour certains calculs de surfaces, j'ai besoin de faire des additions (plusieurs étages) ou des soustractions (trémies, etc.) Je me retrouve ainsi avec une formule complexe où la commande fieldobject ne fonctionne pas.
    Je pourrais editer cette même formule mais là je n'arrive pas à avoir la main pour lancer ma commande fieldobject.
    As tu une idée de la manière dont je pourrais fonctionner ?
    Merci encore

  7. #7
    I could stop if I wanted to
    Join Date
    2002-08
    Posts
    231
    Login to Give a bone
    0

    Default Re: Liaison polyligne et surface/champ

    Bonjour,

    Je reviens sur ta demande
    Comme je trouvais intéressant l'idée de connaître les objets liés à un tableau, je me suis posé la question pour le faire en lisp.
    Voici ce qu'il en résulte:
    Code:
    (defun c:Obj_link2table ( / js obj nb_rows nb_columns indx_r indx_c js_ sub id_cell field_obj en ent)
    	(while (null (setq js (ssget "_:S" '((0 . "ACAD_TABLE"))))))
    	(setq
    		obj (vlax-ename->vla-object (ssname js 0))
    		nb_rows (vla-Get-Rows obj)
    		nb_columns (vla-Get-Columns obj)
    		indx_r 0 indx_c 0
    		js_sub (ssadd)
    	)
    	(while (<= indx_r (1- nb_rows))
    		(if (eq (vla-GetContentType obj indx_r indx_c) 2)
    			(cond
    				((numberp (vlax-variant-value (vla-GetCellValue obj indx_r indx_c)))
    					(setq
    						id_cell (vla-GetFieldId obj indx_r indx_c )
    						field_obj (vla-ObjectIDToObject (vla-get-ActiveDocument (vlax-get-acad-object)) id_cell)
    						en (cdr (assoc 331 (entget (cdr (assoc 360 (entget (vlax-vla-object->ename field_obj)))))))
    					)
    					(setq js_sub (ssadd en js_sub))
    				)
    			)
    		)
    		(setq indx_c (1+ indx_c))
    		(if (> indx_c (1- nb_columns)) (setq indx_r (1+ indx_r) indx_c 0))
    	)
    	(if js_sub (sssetfirst nil js_sub))
    	(prin1)
    )
    Il est bien de faire "Echap" pour bien dé sélectionner les objets gripés entre chaque utilisation de la routine

  8. #8
    Member
    Join Date
    2011-07
    Posts
    30
    Login to Give a bone
    0

    Default Re: Liaison polyligne et surface/champ

    Bonjour Bruno,
    Merci pour tes réponses.
    Malheureusement, je ne comprends rien ou cela ne fonctionne pas.
    J'ai bien récupéré ton script ci-dessus, créé un fichier lisp avec, chargé le lisp dans mon projet, après que dois-je faire ?
    Lorsque je lance la commande, il me donne une erreur:
    Choix des objets:
    ; erreur: type d'argument incorrect: lentityp nil
    Donc je ne comprends pas ton script et son utilisation.
    Pourrais-tu me donner un peu plus d'infos.
    Merci
    SB

  9. #9
    I could stop if I wanted to
    Join Date
    2002-08
    Posts
    231
    Login to Give a bone
    0

    Default Re: Liaison polyligne et surface/champ

    Bonjour,

    Avec ces fêtes, j'ai zappé le suivi de la discussion.Néanmoins je te souhaite une bonne année.

    Les infos que je peux te donner:
    Voici comment tu peux procéder:

    Dans un dessin de test, tu dessine plusieurs objets de même nature.
    Puis je te suggère d'utiliser cette routine: http://bonuscad.perso.sfr.fr/bonusca...Cell&Field.lsp
    Ceci pour te créer rapidement un tableau de métré récapitulatif des objets que tu auras sélectionnés
    Pour testé, fais toi plusieurs tableaux dans le même dessin.
    Une fois ceux-ci mis en place, essayes la routine Obj_link2table proposée ci-dessus en sélectionnant un tableau, les objets ayant servis à constituer ce tableau devraient être "gripés"

    Rappel: bien faire "Echap" pour bien dé-sélectionner les objets gripés entre chaque utilisation de la routine

    Il est fort possible que cela ne fonctionne pas avec tes propres données, dans ce cas il serait bien que tu joigne un extrait de ton dessin pour que je puisse voir pourquoi ça coince.
    Dans la routine je teste si la valeur est un nombre, si dans ton cas tu as mis des suffixe/préfixe en alpha aux champs, il est possible que ça plante.
    Je n'ai pas fais de tests très poussé avant de te la proposer.

Similar Threads

  1. 2014: Polyligne élévation
    By b.allemand in forum AutoCAD General
    Replies: 2
    Last Post: 2015-07-05, 10:23 AM
  2. 2015: Problème de liaison de mur
    By samdunnemorto in forum Revit Architecture - General
    Replies: 2
    Last Post: 2015-02-13, 01:28 PM
  3. 2013: liaison Excel
    By jeff66 in forum AutoCAD General
    Replies: 0
    Last Post: 2013-02-10, 01:01 AM
  4. Replies: 0
    Last Post: 2012-11-13, 03:25 PM
  5. LIAISON DWG AUTOCAD
    By fredvdbgh in forum ACA General
    Replies: 2
    Last Post: 2008-05-28, 06:31 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •