lecrabe Posté(e) le 28 janvier 2013 Partager Posté(e) le 28 janvier 2013 Hello Encore moi ... et voila encore un petit probleme "sympa" : Soit une Jolie Polyligne 2D (Close ou Non) et un Bloc avec UN Attribut classique du genre NUMERO On clique UN point sur la Polyligne (donc on ne commence pas forcement au Debut de la Polyligneet a partir de ce point je desire IDEM (commande DIVISER/MESURER) venir deposer en automatique un Bloc + Attribut le long du reste de la Polyligne Bien entendu, l'attribut doit s'incrementer automatiquement ! avec 2 question prealables : Valeur de Depart = 1 par defautIncrementation = 1 par defaut En fait j'y arrive plus ou moins mais je suis oblige de faire comme suit, c parfois relativement impossible ! 1) Copy de la Polyligne et Coupure de la Polyligne au point de Depart - Ainsi je garde les eventuels XDATAs d'AutoCAD et ODs de MAP 2) Commande MESURER/DIVISER (sur la Copie de la Polyligne) tous les xx.xx Unites graphiques pour dessiner un Point Graphique classqiue (ou Inserer un Bloc avec l'option B) 3) Utilisation d'une Routine Lisp/VLisp qui depose un Bloc avec Attribut (avec Incrementation automatique) ou un Texte ou Incremente un Attribut ou etc ... par N Clics (accrochage: NODal) sur TOUS les points graphiques successivement UN par UN !Donc c SIMPLE et LONG ... Plusieurs routines d'Incrementations sont possibles et operationnelles : Gilles, Patrick_35, Lee Mac, etcmais c toujours par des CLICS successifs en manuel sur chaque Point ou Attribut ou Texte, donc cela peut s'averer relativement "injouable" ! SVP si quelqu'un pouvait me faire la routine ADEQUATE, cela serait fort SYMPA ! Merci d'avance, lecrabe PS: sinon j'ai trouve 2 routines CHAINAGE (Forums Autodesk + GC) assez proches !? Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
VDH-Bruno Posté(e) le 4 février 2013 Partager Posté(e) le 4 février 2013 Bonsoir, Quelques lignes de codes à voir si ça peut te convenir, en partant du principe qu'avant de lancer le lisp, tu as inséré une référence de bloc au point où tu souhaites démarrer la division de ta polyligne .. ;; Insérer plusieurs Références d'un Bloc le long d'une pline et Incrémenter son attribut (defun c:IRB (/ blk pline dist ecart long) (vl-load-com) (or *increment* (setq *increment* 1)) (or *mode* (setq *mode* "Diviser")) (while (not (and (setq pline (car (entsel "\nSélectionnez la polyligne à mesurer/diviser: ")) ) (= "AcDbPolyline" (vla-get-ObjectName (setq pline (vlax-ename->vla-object pline))) ) (setq long (vlax-curve-getDistAtParam pline (vlax-curve-getEndParam pline)) ) ) ) ) (while (not (and (setq blk (car (entsel "\nPointez la référence de bloc à incrémenter: "))) (= "AcDbBlockReference" (vla-get-ObjectName (setq blk (vlax-ename->vla-object blk))) ) ) ) ) (cond ((setq dist (vlax-curve-getDistAtPoint pline (vlax-get blk 'InsertionPoint))) (setq *increment* (cond ((getint (strcat "\nValeur de l'incrément <" (itoa *increment*) ">: ") ) ) (*increment*) ) ) (setq loop T) (while loop (setq ecart (cond ((= "Diviser" *mode*) (initget (+ 1 2) "Mesurer") (getint "\nDIVISER -> Entrez le nombre de segments ou [Mesurer]: ") ) ((= "Mesurer" *mode*) (initget (+ 1 2) "Diviser") (getdist "\nMESURER -> Spécifiez la longueur du segment ou [Diviser]: " ) ) ) ) (setq loop (cond ((= (type ecart) 'STR) (setq *mode* ecart)) ((= (type ecart) 'INT) (setq ecart (/ (- long dist) ecart)) nil) ) ) ) (while (< dist (- long ecart)) (vla-Move (setq blk (vla-Copy blk)) (vla-get-InsertionPoint blk) (vlax-3D-point (vlax-curve-getPointAtDist pline (setq dist (+ dist ecart))) ) ) (cond ((setq att (car (vlax-invoke blk 'GetAttributes))) (vla-put-TextString att (itoa (+ (atoi (vla-get-TextString att)) *increment*)) ) ) ) ) ) ((alert "Le point d'insertion de la référence de bloc ne ce trouve pas sur la polyligne!" ) ) ) (princ) ) A+ Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 5 février 2013 Auteur Partager Posté(e) le 5 février 2013 Hello Mr VDH-Bruno Je viens de faire un test rapide sur MAP 2012 32 bits sous Win XP Pro SP3 et ca marche nikel-chrome ! Excellente l'idee de partir d'un Bloc deja insere au 1er point sur la PLine puis de le copier le long de la PLine ... Merci beaucoup pour tes efforts, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant