Aller au contenu

DenisHen

Membres
  • Compteur de contenus

    4 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    21

Tout ce qui a été posté par DenisHen

  1. Voilà, j'utilise tous les jours l'ensembles de super routines de BonusCAD... Mais voilà, Il y en a une qui me plait tellement, que j'aimerais la "mettre à ma sauce"... En effet, C'est une routine qui encadre un texte, ou un multitexte, d'une trame (_solid)... Pour ce faire, cette routine sort les 4 coordonnées du contour de ce texte (ou MTexte)... Cette figure particulière est toujours un rectangle... (trop rarement un carré, ce qui ne change rien) Comme chacun sait, il ne passe qu'un cercle passant par les 4 sommets d'un rectangle.... C'est ce cercle que j'aimerais tracer.... En gros, j'entours le texte.. J'ai lu et relus la routine "box_text"... Mais je ne saisie pas tous... Aurrais-tu une version commentée, ne serait-ce que légèrement... Car je suis sur qu'il y a du "Code DXF" ( je je découvre ) et des liste ( que je ne maitrise pas encore...) Même sans aucune réponse de ta part, Merci pour ces routines..... Elles me font gagner un temps ! ! ! Pffffff ! ! ! Denis...
  2. DenisHen

    Multi texte

    Echelle : 1#200 donne de jolis résultats (pour ma part...) DenisH...
  3. Merci Gile.... J'ai copier ta routine "dxf_lst" depuis un autre forum et l'utilise pour étudier les Code DXF des entités... Et en gros... Les code DXF résument... Enfin contiennent toutes les propriétés d'une entité, c'est ça ? Si on veut changer l'entité de calque (Code 8) ou si on veut ajouter une constante à un texte (code 1).... On peut passer par çà pour intéroger ses attribues ? Par contre, dxf_lst sur une LWpolyligne de 39 sommets m'a donné : Choix de l'objet: (-1 . ) (0 . "POLYLINE") (330 . ) (5 . "1870") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "FB1 Routes(Bordure)") (100 . "AcDb2dPolyline") (66 . 1) (10 0.0 0.0 0.0) (70 . 130) (40 . 0.0) (41 . 0.0) (210 0.0 0.0 1.0) (71 . 0) (72 . 0) (73 . 0) (74 . 0) (75 . 0) Commande: C'est parce qu'elle est lissée ? Merci... Denis...
  4. Mille merci Patrick... J'y cours... Denis...
  5. Patrick, je viens à l'instant de le refaire en copiant/collant "LWpolyligne" Forum : Lisp et Visual Lisp.... J'ai eu ceci : http://www.cadxp.com/modules.php?op=modload&name=XForum&file=search C'est une page sans réponses... Je me plante où ? PS : j'ai FireFox... Mais mes autres recherches sont généralement fructueuses... Pour la clef "réacteur" j'ai eu 3 réponses...(toujours dans Lisp et Visual Lisp) Denis...
  6. Bon, n'hésite pas sur les commentaire... ;; Liste des sommets d'une lwpolyligne (dans le SCG) ---Ok, ça, je sais... (defun lwpoly_pts (ent) ---Ca aussi... (mapcar ---Ca applique une fonction non pas sur un "symbole" mais sur une liste... '(lambda (pt) ---"fonction" temporaire.... (trans (list (car pt) (cadr pt) (val_dxf 38 ent)) ent 0) ---trans = Translation ---(car pt) premier élément de la liste pt ---(cadr pt) tous les éléments de la liste sauf l'entête ---(val_dxf 38 ent) Là, je ne vois pas --- ent SCO ---0 SCG Les deux derniers, c'est un peu du pif... je l'avoue... (mapcar 'cdr (vl-remove-if-not ---enlève si pas déjà fait ? '(lambda (x) (= (car x) 10)) (entget ent) donnée ent de l'entité ( :-o Alors ? Sur 20, j'ai combien ? Denis...
  7. Bonsoir à tous... Oui, CabinetD, c'est moi, mais au boulo.... Une dernière question... Comment faire pour ne pas faire un "texte" mais un "Mtexte" ? Avec, biensur, le même point d'insertion... Exemple, (je vais tenter le coup en Lisp...) (if (> (strlen ChaineTXT) 10) (= MTexte (strcat Cadastre :" CR " section " TxtSec CR "Numéro " TxtNum)) (= Texte (strcat Cadastre : section " TxtSec "Numéro " TxtNum)) ) CR = retour chariot... Merci... Denis...
  8. Je l'ai... EATTEXTE... J'ai bon ? ;) Denis...
  9. AutoCAD le ferait seul ? En plus, j'ai Map... Mais j'ai à peine une dizaine de cas pas dessin (dwg).. Donc, mettre en oeuvre les sources... Les liens... Du SIG pour gagné du temps... Alors qu'en ne l'utilisant pas.. On va plus vite... Mais... J'y pense d'un coup.. Express n'a pas un truc là-dessus ? ? Je cours vérifier... Merci pour l'idée..... Denis...
  10. Bonsoir à tous... Avant de faire ce nouveau sujet, j'ai cherché avant dan les forums mais je n'ai pas eu de réponse... Mes mots clefs étaient : LWpolyligne LWpolylign Aligné long segment polyligne ....... Rien... Alors, je me suis demandé si je savais encore cliquer ! ! Alors j'ai fouillé l'aide AutoCAD sur le Lisp.... Et j'ai tapé Polyligne... J'ai quasiment tout lu.... Tout ce qui était lisible pour moi... Je suis même tombé sur "Examen détaillé du comportement des réacteurs " Que j'ai trouvé passionant ! ! ! (Surtout que mon sujet devrait s'en servir...) Bon, je m'explique Je cherche à aligner UN texte le long d'un segment de polyligne, exemple, le long d'une Plign (ou LWplign, j'aimerai écrire "Mur porteur". juste en cligant sur un segment... (si je comprend les "réacteurs" le texte restera aligné, même si un des sommet du segment dont il "dépend" est déplacé... Ma question est donc la suivante : Pour avoir le "vecteur" (j'ai pas cherché avec cette clef) d'un segment de polyligne, doit-on utiliser la liste de ses sommets ( avec les XYZ du format DXF (10 x y z)) ? Ou doit-on passer pas d'autre astuces... Je vais fouiller les forum pour plus de renseignement sur les réacteurs... Je croix avoir déjà lu un truc là-dessus de Tramber ou Patric_35... Merci pour vos réponses... Denis...
  11. Attributs Mmmm On parle toujours d'Xdata ? Ou de blocks... Denis...
  12. Donc, je pourrais, dans un avenir lointain, stocker des listes dans les xdata ( :o ) puis, par une routine magique, depuis AutoCAD ou depuis Excel, faire l'envoi vers un Tableau Excel ? (comme associer une adresse cadastrale ("AR" "25" "ER" "45" "ER" "46" .....) à des Propriétaires pour en dresser la liste dans Excel ? Car depuis Excel, c'est du VBA, c'est plus simple pour moi... Merci... Denis...
  13. Voilà ! ! C'est que je voulais , en un premier temps, faire ^C^C(c:xPhEch "x") Avec x comme importance de l'échelle x=1 pour la première échelle (qui donne (vlx-ldata...."Echel1")) x=2 pour la deuxième ........... ( - - - - - - - - - - - - -"Echel2")) Mais comme le code que tu as écris était tellement bien, que j'ai osé le modifier... ;) Et puis aussi, si tout fonctionne avec c: j'ai pensé qu'en faisant ça à toutes mes routines, j'était sûr qu'elles seraient appelées de partout sans erreurs... Mais s'il vaut mieux réfléchir à la source de l'appel de cette routine pour ne pas poser de problèmes dans l'avenir... Je vais les modifier... Sinon, c'est pas "grave" si je les laisse comme-çà pour l'instant ? Merci à toi... Denis...
  14. Une dernière petite question, au sujet de vlax-ldata... Peut-on y stocker une liste ? Comme des coordonnées, ou une suite de texte ("AD" "ER" "ES" "ET"...) ? Merci... Denis...
  15. Merci Gile, mais pour une fois que j'avais compris du premier coup.... J'ai mis "c:" car j'utilise aussi ces routines depuis le MNS : [Première échelle]^c^c(c:xPhEch) [Deuxième échelle]^c^c(c:xPhEch2) Pour le gestion des erreurs, j'ai pas encore tout saisie.... Ce sont les astérisques qui me gênent... Mais je trouverais... Pour la sauvegarde du scu, je vais l'intégrer de ce pas dans mes routines... Pour transformer un texte qui n'existe pas en un bloc... Je vais chercher cet après-midi... Si je trouve le temps.... Merci encore... Denis...
  16. Bonjour à tous... Hier, et grace aux nombreux conseils des membres de CadXP, j'ai écris cette petite routine.... Mais il y a beaucoup de trucs à corriger.... - le passage à un SCU local pendant la routine... Dangeureux si l'utilisateur l'interompt... - l'insertion du texte qui se promène en deux fois ( pour l'ajuster* ) *: lors de l'insertion du texte, on ne vois pas sa taille, alors on clique un endroit au hazard dans le dessin, puis, je le sélectionne et le fais déplacer pour que l'utilisateur le positionne correctement... Au début de cette routine, je vérifie l'échelle du dessin (Ech). Mais je vous donne tout... La ligne de commande dans mon MNS : [symbole + Ancienne borne]^C^C(c:xPhBorne);\(c:xPhTexte "Borne" "Simplex.shx" "1" "0" "Limites (Borne) ancienne" "1" "c" "3" "Ancienne borne"); Puis, les routines de Vlisp : (defun c:xPhBorne () (if (= (setq Ech (vlax-ldata-get "Phalene" "Ech1")) nil) (PhEch)) ;_ Fin de if (setq p1 (getpoint "\nPosition de la borne : ")) (command "_donut" (/ Ech 1250) (/ Ech 830) p1 "") (if (/= (setq Ech (vlax-ldata-get "Phalene" "Ech2")) nil) (command "_donut" (/ Ech 1250) (/ Ech 830) p1 "") ) ;_ Fin de if ) ;_ Fin de defun ; Ecrit un texte à l'échelle (avec Style de texte et Calque) ; Si cette routine existe, c'est grace à CadXP et à ces membres... Alors un grand merci à eux (defun c:PhTexte (NomTxt Police Comp Inclin NomCalq Coul Just Haut Texte / pt1 rot) ; NomTxt : nom du style de texte / Police : nom de la police (SHX ou TTF) ; Comp : facteur d'extention/compression / Inclin : angle d'inclinaison du texte ; NomCalq : nom du calque / Coul : couleur du calque ; Just : justification du texte (milieu, centre gauche...) / Haut : hauteur du texte ; Texte : texte à écrire (if (not (tblsearch "STYLE" NomTxt)) (command "-style" NomTxt Police "0" Comp Inclin "N" "N" "N")) (command "_ucs" "_v") (if (= Just "") (setq Just "c")) (setvar "CMDECHO" 1) (setq Haut (atof Haut)) (if (= (setq Ech (vlax-ldata-get "Phalene" "Ech1")) nil) (c:PhEch)) (setq pt1 (getpoint (strcat "\nCentre du texte <" (rtos (car (getvar "lastpoint"))) "," (rtos (cadr (getvar "lastpoint"))) "," (rtos (caddr (getvar "lastpoint"))) ">: "))) (if (null pt1) (setq pt1 (getvar "lastpoint"))) (setq rot (getorient pt1 (strcat "\nOrientation du texte <" (angtos 0) ">: "))) (if (not rot) (setq rot 0.0)) ; valeur en radian et dans le sens trigo (if (= (setq Ech (vlax-ldata-get "Phalene" "Ech1")) nil) (PhEch)) (command "-calque" "e" (strcat NomCalq " " (rtos (fix Ech) 2 0)) "co" Coul "" "") (setq js (ssadd)) (command "_.text" "j" "mc" "_none" pt1 (/ (* Haut Ech) 1000.0) (polar pt1 rot 10) Texte) (setq js (ssadd (entlast) js)) (command "_move" js "" "_none" pt1) (redraw js 2) ; Ca, ça ne fonctionne pas.... Je cherche encore à utilisation "redraw" correctement (command "_ucs" "_w") (princ) ) ; Xdata de la première échelle (defun c:PhEch (/ Ech) (setq Ech (vlax-ldata-get "Phalene" "Ech1")) (if Ech ;; si Ech est déjà défini (progn (if (setq Ech (getreal (strcat "Ancienne échelle primaire (1/" (rtos Ech) ") - Nouvelle échelle primaire : 1/" ))) ;; Si Ech est re-défini (vlax-ldata-put "Phalene" "Ech1" Ech) ) ;_ Fin de if (princ (strcat "\nEchelle primaire = 1/" (rtos (vlax-ldata-get "Phalene" "Ech1"))) ) ;_ Fin de princ ) ;_ Fin de progn ;; si Ech n'est pas encore défini (progn (setq Ech (getreal "Échelle du dessin primaire 1/")) (vlax-ldata-put "Phalene" "Ech1" Ech) (princ (strcat "\nEchelle primaire = 1/" (rtos (vlax-ldata-get "Phalene" "Ech1"))) ) ;_ Fin de princ ) ;_ Fin de progn ) ;_ Fin de if (princ) ) ;_ Fin de defun ; Xdata de la seconde échelle (defun c:PhEch2 (/ Ech) (setq Ech (vlax-ldata-get "Phalene" "Ech2")) (if Ech ;; si Ech est déjà défini (progn (if (setq Ech (getreal (strcat "Ancienne échelle secondaire (1/" (rtos Ech) ") - Nouvelle échelle secondaire : 1/" ))) ;; Si Ech est re-défini (vlax-ldata-put "Phalene" "Ech2" Ech) ) ;_ Fin de if (princ (strcat "\nEchelle secondaire = 1/" (rtos (vlax-ldata-get "Phalene" "Ech2"))) ) ;_ Fin de princ ) ;_ Fin de progn ;; si Ech n'est pas encore défini (progn (setq Ech (getreal "Échelle secondaire du dessin 1/")) (vlax-ldata-put "Phalene" "Ech2" Ech) (princ (strcat "\nEchelle secondaire = 1/" (rtos (vlax-ldata-get "Phalene" "Ech2"))) ) ;_ Fin de princ ) ;_ Fin de progn ) ;_ Fin de if (princ) ) ;_ Fin de defun Attention aux "x" des les noms des routines... Si non, ça donne c:Phpatati... Merci à tous.... Si ces routines existe... C'est grace à vous.... C'est à 70% du copier/coller ! ! ! Bonne journée à tous.... Et merci encore... Denis...
  17. Pourtant, on peut le faire dans le style de texte ? C'est ça que j'aimerais mettre à 0...
  18. Alors là, Bravo et Merci à tous ! ! C'était exactement ce qui me fallait ! ! ! Je suis super content ! ! J'insert ça dans ma routine et je reposterai le tout.... Denis...
  19. Bonsoir à tous... Dans un Lisp, j'ai (setvar "TEXTSIZE" 0) et AutoCAD répond : erreur: paramètre de la variable AutoCAD rejeté: "TEXTSIZE" 0 Pourquoi ? Elle n'est pas en lecture seule pourtant... Denis...
  20. Alors tu verrais quoi comme initget, BonusCad . (initget 1+128) ? Merci pour ta réponse... Denis...
  21. Surtout que je ne sais pas comment utiliser ta routine, BonusCad, car elle autorise un deuxième point, pour capturer l'angle, ou "rien" qui est traduit par "100.0"... C'est là, que j'ai du mal... Merci ç toi... Denis...
  22. Merde ! ! ! Milles excuses ! ! Et à Gile, Et surtout à BonusCad ! ! C'est que j'étais en train de lire une autre réponse qui était de Gile......... Je te présente TOUTES mes EXCUSES, BonusCad ! ! ! Denis...
  23. WAOW ! ! ! J'enregistre ce truc tout de suite, et je l'encadre au dessus de ma table de nuit ! ! ! ;) Encore merci Gile...... Denis...
  24. Re bonsoir à tous.... Voilà, j'ai fais une routine en VBA qui transforme une superficie (exprimée en mètre carré) en une contenance cadastrale (exprimée en hectare ares centiares) Je vous donnes quelques exemples de convertion... ( les 0 sont très importants...) 1m² = 0a 01ca 10m² = 0a 10ca 101m² = 1a 01ca 110m² = 1a 10ca 123456m² = 12ha 34a 56ca 123456789m² = 12 345ha 67a 89ca Voilà, j'avais écris une routine en VBA mais je n'ai jamais eu l'occasion de la tester, Mais elle devait ressembler à ça (mais je n'en suis pas sûr...C'est de tête...) : Public Sub Surf2Aire() Dim Ha, A, Ca As String Aire = "": Ca = "": A = "": Ha = "": Texte = "" If Right(VarCherche, 2) = "m²" Then VarCherche = Left(VarCherche, Len(VarCherche) - 2) 'Isole les Centiares If Len(VarCherche) > 1 Then Ca = Right(VarCherche, 2) If Len(VarCherche) = 1 Then Ca = VarCherche: VarCherche = "" If Len(VarCherche) > 2 Then VarCherche = Left(VarCherche, Len(VarCherche) - 2) 'Isole les Ares If Len(VarCherche) > 1 Then A = Right(VarCherche, 2) If Len(VarCherche) = 1 Then A = VarCherche: VarCherche = "" If Len(VarCherche) > 2 Then VarCherche = Left(VarCherche, Len(VarCherche) - 2) 'Isole les Hectares If Len(VarCherche) > 0 Then Ha = VarCherche 'Aire = Ha & " ha " & A & " a " & Ca & " ca" If Ha <> "" Then Aire = Ha & " ha " If A <> "" Then Aire = Aire & A & " a " Else Aire = "0 a " If Len(Ca) = 1 Then Ca = "0" & Ca If Ca <> "" Then Aire = Aire & Ca & " ca" Texte = Aire End Sub Bon.... Qui veut répondre est le bienvenu... Denis...
  25. Bonsoir à tous..... Voilà ( encore ) j'ai une routine qui demande le point d'insertion d'in texte puis, elle demande sont orientation ( ou son angle ) Et, si rien n'est répondu... Considère que l'angle est 100.0gr (donc horisontal : // au bas de l'écran )... Mais j'ai la curieuse sensation que je me nois dans une goutte d'eau... Voici ma ligne de commande depuis AutoCAD : (c:AdrCad "L" "2,5"); Et je vous présente cette routine : (defun c:AdrCad (Typ Haut / ) (command "_ucs" "_v") (setvar "CMDECHO" 0) (setq Haut (atof Haut)) (if (= (setq Ech (vlax-ldata-get "Phalene" "Ech1")) nil) (PhEch)) [surligneur] PhEch me retourne un réel : Ech=100.00 par exemple [/surligneur] (setq pt1 (getpoint "\nPosition du texte: ")) (if (= (setq Rot (angtof (angtos (getangle pt1 "\nOrientation du texte (Horizontal): ") 2 4) 2)) nil) (progn (setq Rot 100.0) (princ Rot) ) (progn (princ Rot) (princ "--------") (princ Rot) ) ) (setq TxtSec (getstring S "\nSection : ") TxtNum (getstring N "n° : ")) (command "_ucs" "_v") [surligneur]J'aimerai éviter ça[/surligneur] (if (= Typ "C") (command "texte" "j" "mc" pt1 (/ (* Haut Ech) 1000.0) Rot (strcat TxtSec " n°" TxtNum))) (if (= Typ "L") (command "texte" "j" "mc" pt1 (/ (* Haut Ech) 1000.0) Rot (strcat "Cadastre : section " TxtSec " numéro " TxtNum))) (command "_ucs" "_w") [surligneur]Donc ça aussi...[/surligneur] ) Je crois que je me suis compliqué la vie.... Si "rien" est entré pour le GetAngle... La routine fonctionne bien... Mais si je clique un angle... C'est pas bon... Mais pas bon du tout ! ! Je pense que c'est dû au changement de système de coordonnées impliqué par (command "_ucs" "_v") Bon, la balle est dans votre camp, camarades... Les remarques ( ou encouragements ) de mes professeurs ( ceux qui m'aident depuis le début de ..... de quoi :( ) sur mon code sont toujours les bienvenues... Ils se reconnaissent, j'en suis sûre... Merci à tous... ( y compris pour le rétablissement du site, qui était en dérrangement depuis cet après-midi, en tous cas pour moi ) Bonsoir à tous..... Car il est tard, Monsieur..... DenisH...
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité