alala
Membres-
Compteur de contenus
289 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par alala
-
LISP - Calcul de distance entre blocs
alala a répondu à un(e) sujet de zebzeb dans LISP et Visual LISP
Pour les points d'insertion des bloc j'ai eu quelques soucis car certains sur certains plans voyaioent leurs coordonnées exprimé dans SCO et non dans le SCG (ou le SCU). J'avais donc des point de base en négatif en X ou Y ou à 0,0,0. Perso pour avoir l'origine de mes bloc dans le SCG j'applique ceci : (if (not (equal (cdr( assoc 210 (entget NomEnt))) '(0.0 0.0 1.0))) (setq pt (trans (cdr(assoc 10(entget NomEnt))) NomEnt 2 )) (setq pt (cdr(assoc 10(entget NomEnt)))) ) C'est surement pas très "propre" mais ça fonctionne à la perfection sur les plans que je rencontre. Voila, je m'incruste mais si ça peu t'éviter de longues heures de prise de tête. -
Objet Autocad MAP "invisible" pour un SSGET
alala a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
Autocad MAP 2011. Ce que nous applicons: L'on sélectionne un objet dans un shp chargé en FDO. On lui applique un calque On géle le calque dans la fenetre de présentation. Tous le SHP est maintenant invisible (car gelé) dans la fenêtre sélectionné. Et pour ça il aura suffit de sélectionner un élément pas plus. Donc j'en conclu que le FDO est géré comme un objet unique par autocad et qu'ensuite MAP viens faire sans petites manips dessus (d'ailleurs si l'on regarde dans les dictionnaires il semble qu'il y ait des réacteurs sur les objets maps). J'ai bien peur que vous aillez raison et que les objets maps soient si "spéciaux" qu'il perturbent même le fonctionnement d'un SSGET. Encore merci -
Objet Autocad MAP "invisible" pour un SSGET
alala a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
Le soucis c'est que l'on importe des calques FDO (.layers) directement configurés et que reconfigurer pour chaque plan serait "pénible". D'ou l'intérêt d'une routine qui place tout dans un calque gelé dans la fenêtre qui nous convient et pas dans l'autre. Merci pour ton aide. -
Objet Autocad MAP "invisible" pour un SSGET
alala a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
J'avais cru lire que ça concernais les objet dans objet FDO, donc pas l'objet FDO en lui même, mais je me trompe peu être (surrement). Je continu mes recherches. Merci -
Objet Autocad MAP "invisible" pour un SSGET
alala a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
Et pourtant il y a bien une liaison "caché" entre les calques et les Objets FDO. Celle-ci se réinitialise d'ailleur à chaque chargement du plan et place les objets FDO enregistré sur le calque ACTIF. Le but est donc ici de dispose de deux fenetres de présentation sur une même présentation, l'une affichant les couches FDO et l'autre non. Perso j'aurais choisit de jouer avec la valeur de visibilité en fonction de l'echelle mais je n'ai pas la maitrise de cet élément dans ce cas précis. Dans tous les cas je ne comprend pas qu'un ssget "X" ne trouve pas cet objet quand un ssget avec sélection manuelle ne pose aucun soucis. Merci -
Objet Autocad MAP "invisible" pour un SSGET
alala a posté un sujet dans Pour aller plus loin en LISP
Bonjour, Je cherche actuellement à automatiser le passage d'objet Autocad MAP (en l'occurence des SHP chargé en FDO) d'un calque à un autre. J'ai donc "bétement" fait un (entget(car(entsel))) sur un objet de chaque élément et j'obtient : ((-1 . <Nom d'entité: 7ef2e438>) (0 . "MAPBULKFEATURE") (330 . <Nom d'entité: 7ef1fd18>) (5 . "8DD7") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "Z_SIG") (100 . "AcMapBulkFeature") (70 . 1)) ((-1 . <Nom d'entité: 7ef2e450>) (0 . "MAPBULKFEATURE") (330 . <Nom d'entité: 7ef1fd18>) (5 . "8DDA") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "Z_SIG") (100 . "AcMapBulkFeature") (70 . 1)) ((-1 . <Nom d'entité: 7ef2e460>) (0 . "MAPBULKFEATURE") (330 . <Nom d'entité: 7ef1fd18>) (5 . "8DDC") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcMapBulkFeature") (70 . 1)) je note donc le (0 . "MAPBULKFEATURE") et crée ma routine qui change de calque les objets avec cela : (defun c:cad2sig ( / messhp i ) (setq messhp (ssget "X" (list '(0 . "MAPBULKFEATURE")))) (setq i 0) (repeat (sslength messhp) (entmod (subst (cons 8 "Z_SIG") (assoc 8 (entget (ssname messhp i))) (entget (ssname messhp i)) ) ) (setq i (1+ i)) ) ) Et je découvre donc que ma routine ne compte que deux objets et donc que le dernier n'est pas traité. Avez vous une solution à cela? Merci d'avance. -
Casser les liason Xref avant ouverture
alala a répondu à un(e) sujet de benoitlacroix dans Débuter en LISP
Juste au passage, je ne l'ai pas sous la mains mais TrueView ne serait pas faire cela? (et en plus il purge) Sinon pour le coup un script tel quel : -xref T * -IMAGE D * fonctionnera à la perfection dans un automatiseur de script tel que scripteur ou superautoscript. Voila, c'est pas du lisp mais ça devrait fonctionner(et sous LT également si je ne me trompe pas). -
Modifier temporairement l’affichage des lignes discontinues en continues
alala a répondu à un(e) sujet de VDH-Bruno dans Routines LISP
Merci pour cette routine, je la "pique" bien volontier. Vraiment une mine d'or ce forum! -
Sélection d'une polyligne non continue
alala a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
J'ai eu le même soucis dans le cadre de la même routine que j'essais de créer ici! A un moment j'ai pris le test de faire une sélection de toutes les polylignes sur les calques que je voulais controler puis d'entrer leurs coordonnées dans un liste. Ensuite pour chaque bloc je controlais que les coordonnées été présentes dans la liste et si oui le bloc était déclaré valide, si non il était identifié et compté. Soucis, en RGF93 les coordonnées tournents vite à des valeurs arondis (en plus d'appliquer un affichage scientifique) et sont incomparables car répondent toujours commes identiques alors qu'en réalité elle sont très lointaines. Etonnament en choisisant de ne pas passer par une liste je n'ai aucun probléme et que des résultats corrects. J'ai peu être (pas souvenir et je suis en congées) repassé mes coordonnées en liste avec un rtos quelque part, mais je ne pourrais pas l'assurer! C'est le genre de truc qui font tourner en rond un bon moment pour contourner le problème. Pour en revenir au sujet principal, je tiens une fois de plus à tous vous remercier pour votre aide. J'avoue que la modification de l'echelle de type de ligne globale est une option que je n'envisageait pas dans un lisp, pensant que le rafraichissement ne se ferais qu'après l'execution du lisp, donc trop tard (quand je trace des objets en Vlisp il n'apparaissent qu'après la fin du Lisp). Reste une solution "simple" de copier toutes les polylignes dans un calque avec un type de ligne continu et d'applier un type de ligne "du calque" à toutes. Puis de faire la routine ensuite et de tout supprimer à la fin. C'est barbare (et je voulais l'éviter), mais ça fonctionnerais. Je vais me pencher sur l'echelle de type de ligne en rentrant de congées, je pense que c'est la solution la plus rapide pour arriver à ce que je souhaite , et au pire la sélection "proche" ou globale mais avec un temps d'execution plus long sur les gros fichiers. -
Sélection d'une polyligne non continue
alala a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
efectivement c'est une solution qui conviendrait. A voir quel est le traitement le plus long (contrôle de toutes les polylignes pour chaque bloc sans rien changer ou un changement de chaque polyligne mais un contrôle beaucoup plus restreint pour chaque bloc. Je vais tenter les deux méthode et analyser les résultat (que je ne manquerais pas de transmettre ici). Encore merci pour toute vôtre aide. ps: je ne suis pas (très loins de la) programmeur non plus, mais j'aime a apprendre le LISP pour AUtocad, je trouve le fait que le langage soit interprété est un vrais gain de temps pour l'apprentissage de celui-ci, même si il est surrement plus lent à l'execussion qu'un langage compilé. De plus le Lisp me semble le meilleur moyen d'appliquer des routines logiques répétitive tel qu'un utilisateur le ferait, donc effectivement même si c'est pas toujours la meilleur métode, choisir de transposer une méthode logique de travail classique en routine lisp est une méthode qui porte ses fruits selon mon expérience (faible) de ce langage. -
Sélection d'une polyligne non continue
alala a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
Merci beaucoup pour le temps que vous passez sur mon problème et vos réponses toutes les deux très intéressantes. Effectivement il est un peu décevant qu'autocad ne propose pas une "vision" des objet linéaires non dépendant du type de ligne. La solution pickbox ne me plais pas des masses pour l'aléatoirité quelle engendre. Je fait une routine qui sera utilisable par d'autres et je souhaite qu'ils n'aient pas de possibilité de critiquer le résultat obtenu (ce serais pour moi je m'embéterais pas plus que ça et la soltion avec un zoom a l'echelle qui me plait et ça roule). VDH-Bruno, ta solution m'interresse, mais elle oblige encore une fois a sélectioner toutes les polylignes. par contre elle apporte le fait de pouvoir vérifier plus que les sommets de polylignes correspondant aux blocs (point sur lequel je m'atais concentré sur ma routine, mais dont je n'ai pas parlé ici). C'est même très intéressant pour moi car combiner à ce que je fait déjà je pourrais controler la présence sur une polyligne et/ou un sommet de celle-ci. Encore merci à vous tous pour l'aide que vous m'apportez. -
Sélection d'une polyligne non continue
alala a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
Merci de ta réponse. Mon soucis c'est qu'avec cette méthode j'en reviens encore à tester toutes les polylignes (proche ou non suivant le filtre) pour chaque point que je veu tester! Je partais plus dans l'idée d'intéroger uniquement les objets qui se trouvent sous le point en question, histoire de limiter fortement les intérogations d'objets. -
Sélection d'une polyligne non continue
alala a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
Pour le point, ce n'est pas un soucis, prenons le même exemple avec un cercle si il le faut! Dans mon cas, je m'assure que le point d'insertion du bloc est bien sur la polyligne (passage de SCO en SCG si necessaire). Merci pour le ssget sans option, de base (avec mon peu d'expérience de la chose) j'avais bêtement pensé que l'option était impérative. Je vais effectivement explorer la piste de la sélection proche qui filtrera les polylignes alentours, mais le risque d'erreur en fonction de l'echelle de type de ligne me géne un peu. Je me demandais si 'il n'y avais pas (peu être en Vlisp) une prise en charge de la polyligne compléte même si son type de ligne est dicontinu? Merci pour cette aide. -
Bonjour, Cela fait quelques temps que je consultes les forum cadxp et que grâce à ses membres j'ai pus créer quelques routines utiles à mon travail. Je suis débutant en LISP et VLISP et bien que je réussisse quelques routines j'admet assez rapidement mes limites, mais grâce à ce forum elle sont chaque jour repoussés. Cependant que sèche sur un soucis qui m'apparais dans l'une de mes routines de vérification de blocs. En effet je cherche à trouver toutes les polylignes qui sont présentes sous une insertion de bloc. Pour cela je récupère mon point d'insertion via : (setq pt(cdr (assoc 10(entget(car(entsel)))))) puis je fait un ssget pour trouver les entités polylignes qui sont en dessous du point: (setq ss (ssget "_C" pt pt (list '(0 . "LWPOLYLINE")))) Mon soucis est que si celle polyligne dispose d'un type de ligne discontinue et que malheureusement cette discontinuité est présente à l'endroit ou le bloc se trouve, la fonction ne me renvoie rien (nil). Avez vous une solution qui serais peu consommatrice en ressources pour résoudre ce souci. Le reste de ma routine fonctionne parfaitement, pour dire vrais j'ai déjà une solution qui consiste à appliquer une vérification de toutes les polylignes du plan (filtré par calques) à chaque bloc testé, mais c'est très lourd en ressources si j'ai beaucoup de bloc et beaucoup de polylignes. Merci d'avance pour vôtre aide.
