AzRoDoRzA
Membres-
Compteur de contenus
36 -
Inscription
-
Dernière visite
AzRoDoRzA's Achievements
Newbie (1/14)
0
Réputation sur la communauté
-
Ajout d'un Mtext dans l'espace objet onglet présentation
AzRoDoRzA a posté un sujet dans AutoCAD 2016
Hello, Je rencontre un petit problème avec mon programme. En gros, je sélectionne une polyligne, je récupère un OD de celle-ci, puis je sélectionne un point sur mon plan et ça me créer un Mtext avec l'OD. Ca fonctionne parfaitement dans l'onglet Objet, mais dans l'onglet présentation, rien n'apparaît. J'utilise getpoint pour obtenir le point ou placer le text (que je convertit en point 3d). J'ai essayer d'utiliser la fonction "trans" mais en vain. Voici un extrait du code: (setq js (ssget (list '(0 . "LWPOLYLINE,LINE") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) ) ) ) (setvar "TEXTSIZE" 0.4) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (setq obj (ssname js 0) ename (vlax-ename->vla-object obj) pr (* 0.5 (vlax-curve-getEndParam ename)) deriv (vlax-curve-getFirstDeriv ename pr) rtx (- (atan (cadr deriv) (car deriv)) (angle '(0 0 0) (getvar "UCSXDIR"))) ) (if (or (> rtx (* pi 0.5)) (< rtx (- (* pi 0.5)))) (setq rtx (+ rtx pi))) (setq pt (getpoint "\nOu voulez vous placer le texte ?")) (setq nw_obj (if(/= (ade_odgetfield (ssname js 0) "infoPoly" "typeCable" 0) nil) (vla-addMtext Space (vlax-3d-point pt) 0.0 (ade_odgetfield (ssname js 0) "infoPoly" "typeCable" 0)) ) (mapcar '(lambda (pr val) (vlax-put nw_obj pr val) ) (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation 'BackgroundFill) (list 5 (getvar "TEXTSIZE") 5 pt "Standard" calque rtx 0) ) Bon j'ai raccourci le code pour ne mettre que les informations utiles donc j'ai peut être oublié des variables, mais le plus important est là, pourquoi rien n'apparaît dans mon onglet présentation alors que dans mon onglet objet ça fonctionne parfaitement ? -
4 nouvelles fonctions AutoLISP dans A2012
AzRoDoRzA a répondu à un(e) sujet de (gile) dans Pour aller plus loin en LISP
En fait, je récupère tout les sommets de ma polyligne, je vérifie si un bloc est attaché à un de ces sommets, si c'est le cas je récupère l'attribut "NOM_BLOC" de ce bloc en question. Et en faisant des test dans l'espace objet onglet présentation, j'ai pu remarquer que les coordonnées des polylignes était complètement différentes. C'est donc pour cela que je cherchais une solution à ce problème, et la fonction "trans" répond exactement à mes besoins, merci! -
4 nouvelles fonctions AutoLISP dans A2012
AzRoDoRzA a répondu à un(e) sujet de (gile) dans Pour aller plus loin en LISP
Ah oui exact, donc le type d'entité c'est une polyligne et j'essaye de récupérer ces données : https://prnt.sc/ountcj Je ne peux pas passer par les code dxf car ils me retournent les coordonnées de mon onglet objet or je travaille dans l'espace objet (coordonnées complètement différentes) -
4 nouvelles fonctions AutoLISP dans A2012
AzRoDoRzA a répondu à un(e) sujet de (gile) dans Pour aller plus loin en LISP
Hello, Petite question, c'est quoi le propertyname de "Sommet X" et "Sommet Y" ? -
Récupérer le nombre de polyligne qui passe sur une autre polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
Non non pas de problème je suis là pour apprendre! Justement, j'avais vu que je pouvais le faire avec ça mais j'ai essayé mais ça me mettait "nombre d'arguments trop importants" quand je rajoutait ce petit bout de code et donc j'ai cherché une autre solution. Et là je viens de retester et ça fonctionne, c'est à n'y rien comprendre, peut-être que j'avais oublié la double parenthèse :huh: Merci en tout cas! -
Récupérer le nombre de polyligne qui passe sur une autre polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
Bon bah voila le code qui permet d'obtenir le nombre de polyligne situé sur une polyligne (en largeur): ;nbpolep : Renvois le nombre de polylignes passant sur la largeur de la polyligne sélectionnée, nil si échoue. (defun nbpolep ( / oldosmode pol pt pt1 pt2 ep in nb) (setq oldosmode (getvar 'osmode) pol (entget (car (entsel "\n Sélectionnez une polyligne: "))) pt (cdr (assoc 10 pol));premier point ep (cdr (assoc 43 pol));largeur ) (setvar 'osmode 0) (if (> ep 0) (setq in (+ (/ ep 2) (/ ep 100));incrément légèrement supérieur à la moitié de la largeur pt1 (mapcar '(lambda (x) (- x in)) pt) pt2 (mapcar '(lambda (x) (+ x in)) pt) listPoly (ssget "_C" pt1 pt2 ) ) (princ "\nLa polyligne doit avoir une largeur") ) (setq i 0) (setq nb 0) (while(< i (sslength listPoly)) (setq isPoly (entget(ssname listPoly i))) (if(= (cdr (nth 1 isPoly)) "LWPOLYLINE") (setq nb (+ nb 1)) (prin1 "Pas une polyligne") ) (setq i (+ i 1)) ) (setq nb (- nb 1)) (setvar 'osmode oldosmode) nb ) Désolé pour la propreté je débute en Lisp -
Récupérer le nombre de polyligne qui passe sur une autre polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
C'est gentil merci! Je posterai le lisp qui prend en compte uniquement les polyligne dès que je l'aurai terminé (ça devrait pas être trop long mais on sait jamais ;) ) -
Récupérer le nombre de polyligne qui passe sur une autre polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
Pas mal du tout merci! Il faut juste que je modifie le code pour ne compter que les polylignes car, à première vue, il compte aussi les blocs ^^ Mais j'ai la base c'est impeccable merci beaucoup! -
Récupération d'attribut de bloc par sommet de polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
Ok c'est bon j'ai trouvé ^^ Le code: (defun c:searchBlocFromPoly ( / liste-sommets ent-liste n liste-sommBloc name pos1 pos2 liste value listee) (setq liste-sommets '() ent-liste (entget (car (entsel "\nChoix de la polyligne\n"))) n 0 ) ;_ Fin de setq (repeat (length ent-liste) (if (= 10 (car (nth n ent-liste))) (setq liste-sommets (cons (cdr (nth n ent-liste)) liste-sommets)) ) ;_ Fin de if (setq n (+ 1 n)) ) ;_ Fin de repeat (setq liste-sommets (reverse liste-sommets)) (setq i 0) (setq liste-sommBloc '()) (setq listee (ssget "_X" (list(cons 0 "insert")))) (if(/= listee nil) (while (setq name (ssname listee i)) (setq pos1 (cadr (assoc 10 (entget (ssname listee i))))) (setq pos2 (caddr (assoc 10 (entget (ssname listee i))))) (setq liste (list pos1 pos2)) (setq liste-sommBloc (append liste-sommBloc (list liste))) (if (member liste liste-sommets) (progn (setq value (getattributevalue (ssname listee i))) (prin1 value) ) ;_ Fin de progn ) ;_ Fin de if (setq i (+ i 1)) ) ;_ Fin de while ) ;_ Fin de if ) ;_ Fin de defun (defun getattributevalue (entName_bloc / enx) (if (and (setq entName_bloc (entnext entName_bloc)) (= "ATTRIB" (cdr (assoc 0 (setq enx (entget entName_bloc))))) ) ;_ Fin de and (cdr (assoc 1 (reverse enx))) (getattributevalue entName_bloc) ) ;_ Fin de if ) ;_ Fin de defun Il suffisait juste de mettre ssget dans une variable au lieu de l'appeler 15 fois ;) Bye! -
Récupération d'attribut de bloc par sommet de polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
Hello, Bon alors ce programme fonctionne nickel.... Quand on a qu'une 20aine de bloc, mais quand on a environ 1 000 bloc (1 067 pour être exact) , le programme est très, très lent (il met environ 10 secondes à s’exécuter). Du coup je relance un peu le sujet pour savoir s'il n'y a pas moyen d'améliorer le programme pour le rendre plus rapide (instantané serait cool) ou alors une fonction qui permettrait de récupérer un objet en fonction d'un point donné. Bye! -
Récupérer le nombre de polyligne qui passe sur une autre polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
Comme le montre la photo, mes polylignes ne se superposent pas (elle superposent uniquement la polyligne orange mais elle ne la "croise" pas car elle est juste plus épaisse et l'épaisseur n'est que graphique). Du coup oui j'aimerai donc sélectionner des polylignes très proches, la solution de sélection rectangulaire n'est pas bête, je vais tester ça merci! -
Récupérer le nombre de polyligne qui passe sur une autre polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
Salut Fraid, J'avais pensé à cet idée, mais le problème c'est que même si ma polyligne est énorme, elle n'a que 2 sommet au centre des extrémité de celle-ci et donc avec ton programme, il me retourne 1 car il n'y a qu'une polyligne qui passe par ses sommets, il faudrait trouver un moyen de pouvoir lui dire "ce sommet la et ses alentours", exemple: Le sommet de ma polyligne est (25.8524 82.6763) et mon autre polyligne à son sommet en (25.7399 82.461), est-ce que c'est possible de comparer ces valeurs avec un arrondi fournis ? Du style à 0.2 près ? -
Récupérer le nombre de polyligne qui passe sur une autre polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
Bon et bien je vais me contenter d'un getkword qui demande le nombre de cable sur ces polylignes, ça fera l'affaire. Merci à vous -
Récupérer le nombre de polyligne qui passe sur une autre polyligne
AzRoDoRzA a répondu à un(e) sujet de AzRoDoRzA dans AutoCAD 2016
COME: effectivement, quand je dis 3, je parle de récupérer la valeur "3" qui correspond aux nombre de polylignes qui se situe sur la polyligne orange, et oui, je cherche à faire ça en Lisp, mais si une commande existe, je pourrai l'utiliser dans mon programme :) NicoM: Ah mince.. :( -
Récupérer le nombre de polyligne qui passe sur une autre polyligne
AzRoDoRzA a posté un sujet dans AutoCAD 2016
Hello, Petite question, est-ce que c'est possible de récupérer le nombre de polyligne situé sur une polyligne avec une plus grosse épaisseur ? Exemple: Multiple polyligne J'aimerai récupérer le chiffre "3" car il y a 3 polylignes qui passent sur la polyligne orange. Merci bye!
