Aller au contenu

onossa

Membres
  • Compteur de contenus

    33
  • Inscription

  • Dernière visite

Tout ce qui a été posté par onossa

  1. Merci pour ta réponse Gile. Bonne après midi.
  2. Merci Gile, C'est exactement cela. J'entend beaucoup parler quele lisp cessera sur les futures versions d'AutoCA. Mon opinion est différente. Qu'en pesnes tu ? Entre lips, vba et c++, quelle language te semble le plus adapté à un développement long terme, déploiement, et ple plus à même de fonctionner sur tous postes (os / versiosn d'AutoCAD, US ou FR). Merci beaucoup Gile, Amicalement
  3. Bonjour Gile, et merci pour ta réponse si rapide. Au fait, placer le vlx sur serveur, me permet d'apporter quelques ajouts quand besoin est, et que les utilisateurs puissent en bénéficier quand ils allument leur PC. protéger l'accès aux fonctions, est lié au fait d'avoir des personnes qui souhaiteraient bénéficier de ces fonctions,s ans avoir le profil de dessinateur. Ce sont des petits plus que je souhaite conserver entre dessinateurs, à tort ou à raison. Certains arrivent à "apploader", et l'idée serait qu'ils ne puissent pas s'en servir si ils ne font pas partie des membres autorisés. De plus, je ne dois pas modifier les fichiers acaddoc ou mnl. Juste un ajout dans startup suite m'est autorisé. je pense que le (if (member... suffira dans une fonction startup. Je suis preneur de toute remarque ou conseil Gile. Dernière question: pour une société qui désire implémenter un ruban supplémentaire avec quelques fonctions dédiées au métier: quel language penses tu le plus pertinent, sachant qu'il y a un facteur déployement et update non négligeable ? Merci pour tes lumières et bonne journée. Amicalement,
  4. Bonjour, Utilisateur ponctuel d'Autolisp, je souhaiterai autoriser l'accès aux petites fonctions contenues dans un lisp qu'à deux collègues. (les deux seuls dessinateurs). Le fichier est un vlx issu d'un lsp, placé sur un serveur. L'idée est de placer une fonction s::startup qui identifierai le login de l'utilisateur, et sortirai d'AutoCAd si celui-ci n'est pas un de ceux stipulés. Je pensais à la fonction If + or, mais, même si je n'ai jamais été un programmateur de lisp aguérri, je me suis rouillé depuis le temps et je n'arrive pas dans le OR, à lui faire "voir" l'utilisateur autorisé.. Quelqu'un pourrait m'aider ?? Merci à tous ! (defun s::startup () (setq lq (getvar "loginname")) (if (or (/= lq "userautorise1") (/= lq "userautorise2") (/= lq "userautorise3") ) (progn (alert "login non-autorisé") ;(command "quit" "n") ) ) ) (defun c:toto () (command "zoom" "ex") )
  5. Bonjour, et merci pour vos réponses. Au fait, le chargement auto se fait via le Startup suite de la boite de dialogue appload. Pour ce qui est du code, je redéfini les fonctions QSAVE SAVEAS et REGEN afin que celles-ci updatent le nombre total de présentations, afin que le champ du bloc cartouche qui l'utilise soit renseigné/updaté. ;;;; nouvelle définition de la commande QSAVE (pour update du champ du nombre total de présentations) (defun c:QSAVE () (layoutcount) (title_expand) (command ".QSAVE") ) ;;;; Fin nouvelle définition de la commande QSAVE Pour layoutcount: ;;; Début de la mise à jour automatique du nombre total de présentation (comptage et update du champ) (defun layoutcount ( / acadObj acDoc acDocLayouts acDocSumInfo) (vl-load-com) (setq acadObj (vlax-get-acad-object)) (setq acDoc (vlax-get-property acadObj 'ActiveDocument)) (setq acDocLayouts (vlax-get-property acDoc 'Layouts)) (setq acDocSumInfo (vlax-get-property acDoc 'SummaryInfo)) ;; Subtract one for the Model tab (setq sLayoutCount (itoa (1- (vlax-get-property acDocLayouts 'Count)))) (if (= (strlen sLayoutCount) 1) (setq sLayoutCount (strcat "0" sLayoutCount))) ) Si le nombre total est à 1 chiffre, je rajoute un 0 devant.. Pour title_expand, il s'agit de récupérer la valeur d'un attribut du cartouche (si existant) afin de renseigner un champ personnalisé du fichier, afin que celui-ci soit récupéré dans Productstream... ;;;;;;;;;;;;;;;; Extraction du titre depuis le block ou dernière ligne cartouche non-sketch vers propriétés fichier pour Vault (defun title_expand ( / kWord acadObj acDoc acDocSumInfo nCustomProps loopCnt customFieldName fieldValue errHandler nombloc etiq_title etiq_title2 valtitle) (setq ss nil) (setq ss (ssget "x" '((-4 . "")))) (setq etiq_title "title_3") (setq etiq_title2 "Description.1") (if (/= ss nil) (progn (while (setq Ent (ssname ss 0)) (setq tempEnt Ent) (while (setq tempEnt (entnext tempEnt)) (setq EntData (entget tempEnt)) (if (and (= (cdr (assoc 0 EntData)) "ATTRIB") (or (= (cdr (assoc 2 EntData)) etiq_title) (= (cdr (assoc 2 EntData)) etiq_title2) ) ) (progn (setq valtitle (cdr (assoc 1 EntData))) ) ) (ssdel Ent ss) ) ) ) ) (princ valtitle) (if (/= valtitle nil) (progn (vl-load-com) (setq acadObj (vlax-get-acad-object)) (setq acDoc (vlax-get-property acadObj 'ActiveDocument)) (setq acDocSumInfo (vlax-get-property acDoc 'SummaryInfo)) (setq customFieldName "DrawingDesignation.1") (if (or (/= customFieldName "")(/= customFieldName nil)) (progn ;; Test to see if the Field is already created or not (setq errHandler (vl-catch-all-apply 'vlax-invoke-method (list acDocSumInfo 'GetCustomByKey customFieldName 'fieldValue))) ;; Get the value for the field (setq fieldValue valtitle) ;; Test error ;;(vl-catch-all-error-message errHandler) (if (= errHandler nil) ;;Update extry (vlax-invoke-method acDocSumInfo 'SetCustomByKey customFieldName fieldValue) ;; Field doesn't exist... creating entry (vlax-invoke-method acDocSumInfo 'AddCustomInfo customFieldName fieldValue) ) (progn ;; Test to see if the Field is already created or not (setq errHandler (vl-catch-all-apply 'vlax-invoke-method (list acDocSumInfo 'GetCustomByKey customFieldName 'fieldValue))) ;; Test error ;;(vl-catch-all-error-message errHandler) ;(if (= errHandler nil) ;;Remove extry ; (vlax-invoke-method acDocSumInfo 'RemoveCustomByKey customFieldName) ;) ) ) ) ) ) ) ;;;;;;;;;;;;;;;;; FIN Extraction du titre depuis le block ou dernière ligne cartouche non-sketch vers propriétés fichier pour Vault Ces fonctions sont toutes définies dans un fichier Lisp que le compile dans un VLX et que je place dans un lecteur réseau. Quand je fai un appload et que je charge manuellement, ça marche... Voilà, merci pour votre précieuse aide.
  6. Bonjour, J'utilise un vlx chargé au démarrage. Quand je lance une commande qui y est définie, j'ai: error: bad argument type: lselsetp nil dans la foulée, si j'appload manuellement le même VLX, là ça fonctionne.... Si quelqu'un a une idée, ce serait sympa.... Merci !!
  7. Cette fonctionnalité m'intéresserai: récupérer des valeurs d'attributs et les envoyer vers un tableau AutoCAD: la v2009 a une fonction dédiée à cela ?? Et en plus des valeurs, il est possible de quantifier tel ou tel bloc dans le tableau ? Merci pour vos lumières !
  8. merci une fois de plus bonuscad ! - a quel niveau pourrais-je mettre en place une condition qui testerai par exemple un valeur non nulle de radius afin de nommer de façon particulière le POINT de laligne concernée ? (il s'agirai d'avoir des point de tangeance en entrée et sortie d'arc de polyligne qui s'appelerai TP1 puis TP2, et pour l'arc suivan TP4 et TP5 ? - est il possible de récupérer le centre de chaque arc de la pline,, afin d'encréer des lignes supplémentairs avec les coordonnées desdits centres ? Merci encore pour ton aide ! [Edité le 25/3/2009 par onossa]
  9. J'ai réussi à trouver: une pettie fonction qui défini la précision avant chaque mappage. Le HIC qui reste: dans la colonne des RADIUS (dernière colonne), je souhaitais que les valeurs "0" soient remplacées par un tiret "-" . Le hic c'est que les autres colonnes sont succeptibles d'avoir le meme type de valeur "0", et que je souahiterai là les conserver... Comment ne balayer que la dernière colonne pour tester et remplacer les "0" gênants par des "-" Merci pour votre aide... (vl-load-com) (defun c:track ( / js obj ename AcDoc Space pr nb lst_id-seg lst_pt lst_length lst_alpha lst_rad all_path j end_pos id_path fonts_path file_shx nw_style dist_start dist_end pt_start pt_end seg_len seg_bulge rad alpha oldim oldlay h_t w_c ename_cell n_row n_column) (princ "\nSélectionner une polyligne.") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))) (princ "\nSélection vide, ou n''est pas une polyligne valable! lancez CONVERT > Polyline...") ) (setq obj (ssname js 0) ename (vlax-ename->vla-object obj) AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) pr -1 nb 0 lst_id-seg '() lst_pt '() lst_cpl '(0.0) lst_length '(0.0) lst_alpha '(0.0) lst_rad '(0.0) ) (cond ((null (tblsearch "LAYER" "0")) (vla-add (vla-get-layers AcDoc) "0") ) ) (cond ((null (tblsearch "STYLE" "Tahoma_Table")) ;(setq all_path (getenv "ACAD") j 0) ;(while (setq end_pos (vl-string-position (ascii ";") all_path)) ;(setq id_path (substr all_path 1 end_pos)) ;(if (wcmatch (strcase id_path) "*FONTS*") ;(setq fonts_path (strcat id_path "\\")) ;) ;(setq all_path (substr all_path (+ 2 end_pos))) ;) ;(setq file_shx (getfiled "Selectionnez un fichier de police" fonts_path "shx" 8)) (if (not file_shx) (setq file_shx "Tahoma") ) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Tahoma_Table")) (mapcar '(lambda (pr ) (vlax-put nw_style pr ) ) (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag) (list file_shx 0.0 (/ (* 15.0 pi) 180) 1.0 0.0) ) ;(command "_.ddunits" ;(while (not (zerop (getvar "cmdactive"))) ;(command pause) ) ) (setq cpl (atof "0")) (repeat (fix (vlax-curve-getEndParam ename)) (setq dist_start (vlax-curve-GetDistAtParam ename (setq pr (1+ pr))) dist_end (vlax-curve-GetDistAtParam ename (1+ pr)) pt_start (vlax-curve-GetPointAtParam ename pr) pt_end (vlax-curve-GetPointAtParam ename (1+ pr)) seg_len (- dist_end dist_start) cpl (+ cpl seg_len) seg_bulge (vla-GetBulge ename pr) rad (if (zerop seg_bulge) 0.0 (/ seg_len (* 4.0 (atan seg_bulge)))) alpha (if (zerop seg_bulge) (angle pt_start pt_end) 0.0) lst_id-seg (cons nb lst_id-seg) lst_pt (cons pt_start lst_pt) lst_length (cons seg_len lst_length) lst_cpl (cons cpl lst_cpl) lst_rad (cons (abs rad) lst_rad) lst_alpha (cons alpha lst_alpha) nb (1+ nb) ) ;(princ lst_cpl) ;(princ lst_length) ) (setq lst_id-seg (cons nb lst_id-seg) lst_pt (cons pt_end lst_pt) oldim (getvar "dimzin") oldlay (getvar "clayer") ) (setvar "dimzin" 0) (setvar "clayer" "0") (initget 9) (setq ins_pt_cell (getpoint "\nPoint d'insertion haut gauche du tableau: ")) (initget 6) ;(setq h_t (getdist ins_pt_cell (strcat "\nHauteur du texte <" (rtos (getvar "textsize")) ">: "))) (setq h_t (atof "35")) (if (null h_t) (setq h_t (getvar "textsize")) (setvar "textsize" h_t)) (initget 7) ;(setq w_c (getdist ins_pt_cell "\nLargeur des cellules: ")) (setq w_c (atof "280")) (vla-addTable Space (vlax-3d-point ins_pt_cell) (+ 3 nb) 7 (+ h_t (* h_t 0.75)) w_c) (setq ename_cell (vlax-ename->vla-object (entlast)) n_row (+ 2 nb) n_column -1) (vla-SetCellValue ename_cell 0 0 (vlax-make-variant (strcat ;" Objet: " (cdr (assoc 0 (entget obj))) (cdr (assoc 8 (entget obj))) ;" Longueur totale = " (rtos (vlax-get ename 'Length)) ) 8 ) ) (defun rtos0 (n0)(rtos n0 2 0)) (defun rtos1 (n1)(rtos n1 2 1)) (defun angtos2 (n2)(angtos n2 0 2)) (vla-SetCellTextStyle ename_cell 0 0 "Tahoma_Table") (vla-SetCellTextHeight ename_cell 0 0 (vlax-make-variant h_t 5)) (foreach n (mapcar'list (append (mapcar 'itoa lst_id-seg) '("POINT")) (append (mapcar 'rtos0 lst_cpl) '("CPL")) (append (mapcar 'rtos0 (mapcar 'car lst_pt)) '("EASTING")) (append (mapcar 'rtos0 (mapcar 'cadr lst_pt)) '("NORTHING")) (append (mapcar 'rtos1 lst_length) '("GAP")) (append (mapcar 'angtos2 lst_alpha) '("HEADING")) (append (mapcar 'rtos0 lst_rad) '("RADIUS")) ) (mapcar '(lambda (el) (vla-SetCellValue ename_cell n_row (setq n_column (1+ n_column)) ;(if (or (eq (rtos0 0.0) el) (eq (angtos2 0.0) el)) (vlax-make-variant "-" 8) (vlax-make-variant el 8)) (if (eq (angtos2 0.0) el) (vlax-make-variant "-" 8) (vlax-make-variant el 8)) ) (vla-SetCellTextStyle ename_cell n_row n_column "Tahoma_Table") (vla-SetCellTextHeight ename_cell n_row n_column (vlax-make-variant h_t 5)) ) n ) (setq n_row (1- n_row) n_column -1) ) (setvar "dimzin" oldim) (setvar "clayer" oldlay) (prin1) )
  10. Et me revoilà, avec un peu de temps pour me penché son ce lisp, qui génère un tableau (un vrai) d'après les points de controle d'une polyligne. J'ai repris le lisp excellent de Bonuscad, et essayé de le mettre conforme à mes besoins: - Ajout d'une colonne pour les longueurs cumulées, - style de texte prédéfini (tahoma) - Layer 0 pour le tableau - Hauteur de texte, lignes et colonnes de tableau prédéfinies (je souhaite une mise en forme figée) Le seul point qui coince, et que je n'arrive pas à résoudre, est que j'aimerai avoir des précisions différentes en fonction de la colonne concernée: la colonne GAP doit avoir une décimale de précision, et HEADING deux décimales. les autres colonnes à 0 décimales. Or, comme je m'appui sur les précisions courantes... J'ai essayé de mettre en place ces précisions dans la ligne de mapcar 'rtos, mais je dois me planter quelque part... Si vous avez la solution.... Merci encore Bonuscad pour ton lisp. (vl-load-com) (defun c:track ( / js obj ename AcDoc Space pr nb lst_id-seg lst_pt lst_length lst_alpha lst_rad all_path j end_pos id_path fonts_path file_shx nw_style dist_start dist_end pt_start pt_end seg_len seg_bulge rad alpha oldim oldlay h_t w_c ename_cell n_row n_column) (princ "\nSélectionner une polyligne.") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))) (princ "\nSélection vide, ou n''est pas une polyligne valable! lancez CONVERT > Polyline...") ) (setq obj (ssname js 0) ename (vlax-ename->vla-object obj) AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) pr -1 nb 0 lst_id-seg '() lst_pt '() lst_cpl '(0.0) lst_length '(0.0) lst_alpha '(0.0) lst_rad '(0.0) ) (cond ((null (tblsearch "LAYER" "0")) (vla-add (vla-get-layers AcDoc) "0") ) ) (cond ((null (tblsearch "STYLE" "Tahoma_Table")) ;(setq all_path (getenv "ACAD") j 0) ;(while (setq end_pos (vl-string-position (ascii ";") all_path)) ;(setq id_path (substr all_path 1 end_pos)) ;(if (wcmatch (strcase id_path) "*FONTS*") ;(setq fonts_path (strcat id_path "\\")) ;) ;(setq all_path (substr all_path (+ 2 end_pos))) ;) ;(setq file_shx (getfiled "Selectionnez un fichier de police" fonts_path "shx" 8)) (if (not file_shx) (setq file_shx "Tahoma") ) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Tahoma_Table")) (mapcar '(lambda (pr ) (vlax-put nw_style pr ) ) (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag) (list file_shx 0.0 (/ (* 15.0 pi) 180) 1.0 0.0) ) ;(command "_.ddunits" ;(while (not (zerop (getvar "cmdactive"))) ;(command pause) ) ) (setq cpl (atof "0")) (repeat (fix (vlax-curve-getEndParam ename)) (setq dist_start (vlax-curve-GetDistAtParam ename (setq pr (1+ pr))) dist_end (vlax-curve-GetDistAtParam ename (1+ pr)) pt_start (vlax-curve-GetPointAtParam ename pr) pt_end (vlax-curve-GetPointAtParam ename (1+ pr)) seg_len (- dist_end dist_start) cpl (+ cpl seg_len) seg_bulge (vla-GetBulge ename pr) rad (if (zerop seg_bulge) 0.0 (/ seg_len (* 4.0 (atan seg_bulge)))) alpha (if (zerop seg_bulge) (angle pt_start pt_end) 0.0) lst_id-seg (cons nb lst_id-seg) lst_pt (cons pt_start lst_pt) lst_length (cons seg_len lst_length) lst_cpl (cons cpl lst_cpl) lst_rad (cons (abs rad) lst_rad) lst_alpha (cons alpha lst_alpha) nb (1+ nb) ) ;(princ lst_cpl) ;(princ lst_length) ) (setq lst_id-seg (cons nb lst_id-seg) lst_pt (cons pt_end lst_pt) oldim (getvar "dimzin") oldlay (getvar "clayer") ) (setvar "dimzin" 0) (setvar "clayer" "0") (initget 9) (setq ins_pt_cell (getpoint "\nPoint d'insertion haut gauche du tableau: ")) (initget 6) ;(setq h_t (getdist ins_pt_cell (strcat "\nHauteur du texte <" (rtos (getvar "textsize")) ">: "))) (setq h_t (atof "35")) (if (null h_t) (setq h_t (getvar "textsize")) (setvar "textsize" h_t)) (initget 7) ;(setq w_c (getdist ins_pt_cell "\nLargeur des cellules: ")) (setq w_c (atof "280")) (vla-addTable Space (vlax-3d-point ins_pt_cell) (+ 3 nb) 7 (+ h_t (* h_t 0.75)) w_c) (setq ename_cell (vlax-ename->vla-object (entlast)) n_row (+ 2 nb) n_column -1) (vla-SetCellValue ename_cell 0 0 (vlax-make-variant (strcat ;" Objet: " (cdr (assoc 0 (entget obj))) (cdr (assoc 8 (entget obj))) ;" Longueur totale = " (rtos (vlax-get ename 'Length)) ) 8 ) ) (vla-SetCellTextStyle ename_cell 0 0 "Tahoma_Table") (vla-SetCellTextHeight ename_cell 0 0 (vlax-make-variant h_t 5)) (foreach n (mapcar'list (append (mapcar 'itoa lst_id-seg) '("POINT")) [b] ;;; Je pensais mettre ici la précision de la conversion réel / string ;;; (append (mapcar 'rtos lst_cpl 2 0) '("CPL")) (append (mapcar 'rtos lst_cpl) '("CPL"))[/b] (append (mapcar 'rtos (mapcar 'car lst_pt)) '("EASTING")) (append (mapcar 'rtos (mapcar 'cadr lst_pt)) '("NORTHING")) (append (mapcar 'rtos lst_length) '("GAP")) (append (mapcar 'angtos lst_alpha) '("HEADING")) (append (mapcar 'rtos lst_rad) '("RADIUS")) ) (mapcar '(lambda (el) (vla-SetCellValue ename_cell n_row (setq n_column (1+ n_column)) (if (or (eq (rtos 0.0) el) (eq (angtos 0.0) el)) (vlax-make-variant "-" 8) (vlax-make-variant el 8)) ;(if (eq (rtos 0.0) el) (vlax-make-variant "-" 8) (vlax-make-variant el 8)) ) (vla-SetCellTextStyle ename_cell n_row n_column "Tahoma_Table") (vla-SetCellTextHeight ename_cell n_row n_column (vlax-make-variant h_t 5)) ) n ) (setq n_row (1- n_row) n_column -1) ) (setvar "dimzin" oldim) (setvar "clayer" oldlay) (prin1) )
  11. Bonjour, je cherche à réduire le nombre de calques présent dans un dessin qui sera ensuite inséré dans un dessin parent. Ce dessin parent contenant plus de 250 calques, je souhaiterai ne pas le poluer par l'apport de nombreux calques. aussi, vu la faible importance de l'architecture du dessin à insérer, je souhaiterai aapliquer les propriétés définies pr chacun des calques présents, aux entités que ceux-ci contienent respectivement. Ce qui en résumé veut dire: le contraire de Ducalque: chaque entité a ses propriétés héritées de celles du calque auquel il appartient. Ceci afin de, ensuite, passer toutes ces entités vers un seul calque, et d'avoir néanmoins toutes les différences visuelles initiales... Dans la règle de l'art, c'est plutot le contraire qu'on s'attache à faire... Si quelqu'un voit une hypothèse de code pour cela...ça me serai d'un grand secours ! Olivier
  12. Bonjour (Gile), Je viens de tester ton code, et il fonctionne parfaitement: Il traite les mtext, attributs, et tous les présentations si on valide sans selectionner d'enttié. Merci beaucoup !
  13. Bonjour, je cherche un moyen de supprimer (ou plutot convertir en valeur texte "normale", tous les champs présents dans mon dessin. Ils sont tous placés dans l'espace papier, dans differents onglets, et sont sous forme, soit des attributs, soit des mtexts, voir des textes simples... J'ai lu un post où il était question de filter pour les selectionner, mais je n'en voit pas la possibilité, vu que l'intitulé "champ" ou "field" n'existent pas... Merci pour vos idées et votre aide !!!
  14. C'est bien cela Phil. Et étant novice, c'est ton approche qui me semble logique, me demandant comment serait-il possible de pointer autre chose que le block PAPA, puis ensuite l'inspecter. Un petit détail concernanrt le point 04: c'est éventuellement la rotation du texte lui même que le champ récupère. Champ mis en place au niveau de l'attdef, en tant que valeur par défaut de l'attribut. Au point 09, Mtext ou simple text, indiférent. Mais comme tu le vois, ce sont des détails. L'idée, tu l'as parfaitement comprise..
  15. Au fait, le père m'importe peu. Je souahite plutot meme passer au travers ! Dans l'hypothèse ou nous arriverions via dev à créer un field qui pointe vers un attribut, et que celui-ci, en plus d'appartenir à son block A, voit soit block intégré dans un autre block B (on ne peut alors pas, via commande autocad, aller editer cet attribut imbriqué), y a t'il malgré tout un update de ce field, sachant qu'en double cliquant donc sur l'attribut, il n'est alors considéré pour autocad que comme un block B ??
  16. (il faut que je me couche plus tôt et que je me repose un peu...) Pardonne moi Phil. Merci Phil et non pas Chris !
  17. Merci pour ton aide Chris.
  18. J'ai vu, oui que c'était possible, maintenant, est-ce possible de récupérer cet object ID pour une entité imbriquée ? Car l'exemple que tu cite, est créée en cliquant directment au niveau de l'objet, et non pas un block qui le contiendrait. Pour exemplifier egalement, que se passerait-il si nous mettions cette pline dans un bloc, et voudrions récupérer les infos de cette pline ?
  19. Pour répondre à ta question Chris, oui j'ai essayé, et c'est ce qui serait le plus simple. Mais le hic, c'est que cette rotation, est la rotation du block "parent" et non pas du "petit block" imbriqué...
  20. En même temps, je me demande si, plutot que de passer par la boite de dialogue pour créer ce champ, qui apparament n'apporte pas la récursivité qui me permettrait de selectionner l'entitité attribut. Je pensais à sélectionner donc cet attribut par le biais d'un lisp, qui irai récupérer son ID et le placerai dans un texte choisi de l'espace papier... Est-ce faisable ??
  21. Merci Chris. Le probleme, c'est que quand je veux créer le champ, il m'indique que l'objet sélectionné n'est pas l'attribut, mais le bock entier qi englobe le tout: Ce n'est pas tant un probleme d'update je pense. Ce qui j'ai dans la boite de dialogue de création du champ (c'est une version US) Field category: je sélectionne "Objects" En dessous, Field names: je sélectionne Object je pointe l'attribut et l'object type affiché est: "Block Reference" Si je fais la même manip, mais en décomposant avant le block qui contient le tout, et que je recré donc un champ, là, je peut accéder à l'objet attribut... Toutes les idées sont les bienvenues...
  22. Passé sous 2009 avec PRoductstream et Inventor 2009, je pleure un peu... 4Go de RAM, carte graphique FX Quatro (mis je ne me souviens plus exactement laquelle...) J'ouvre deux plans de 40Mo chacun, et là, c'est 4,63Go qui sont avalés. Et là, c'est que du bonheur, le CPU s'endort et mon disque dur souffre... Je ne suis pas anti autodesk, c'est mon outil depuis 1991, mais je regrette soncèrement la v10 que j'ai bien connu avec mon 386 DX40, mes 4Mo (méga octes ! soit mille fois moins quaujourd'hui !) et je galèrai moins. Seul bémol: je ne bossais pas avec des fichiers de 40Mo. MAis quand même, à part pour la photo, je n'avais jamais vu un fichier déployé à ce point, entre taille disque et occupation mémoire... Nouss ommes de nombreux collègues à avoir migré, et à nous plaindre. Certains plus ou moin objectivement, mais honeetement, les deux fichiers sur lesquels je travaille, je travaillais déjà dessus la semaine dernière, avec autant d'entités, et sans difficulté, sans latences, et avec une occupation en mémoire moindre ! Progrès, quand tu nous tiens...
  23. Dans le même esprit, si j'ai bien saisi le post intial, j'aimerai qu'on m'indique si la manip suivante est possible avec autocad ou via lisp: - jai un bloc dans l'espace objet qui existe plusieurs fois, insérés avec des angles de rotation différents. J'ai plusieurs présentations d'espace papier. Dans chacune de celles-ci, j'aimerai placer un texte, qui irai chercher l'angle du block. Cela se fait sans probleme avec les fields. Le souci , est que ces fameux blocks de l'espace objets, sont imbriqués dans un autre block qui les contient tous. Et donc, le champ ne peut apparement pas atteindre le niveau 2 (angle de rotation d'un block contenu dans un block... J'ai essayé de créer un attribut dans mes petits blocs, espérant que le field aille recueillir l'angle de l'attribut, et, malgré qu'il me semblait hier avoir cru aboutir au resultat espéré, aujourd'hui je n'y arrive plus ! Est-ce une manip possible ? Où se trouve l'option dont vous parlez d'activer les blocks imbriqués ?? Merci pour votre aide !
  24. Merci Bonuscad pour ta réponse N°10 et ton aide. Je tâcherai de me faire violence et de peaufiner ton code afin qu'il réponde exactement à mes besoins: - Utilisation du style de texte courant - Utilisation des unités et précisions courantes - Ajout d'un condition afin d'appeler le premier point d'un segment arc "TP" pour tangent point - Ajout d'un nouveau point "IP" intersection point indiquant les coordonnées de l'intersection virtuelle de deux segments droits avant et après le segment arc (c'est là que je risque de bloquer...) - Ajout d'un condition afin d'appeler le premier point d'un segment arc "TP" pour tangent point - Enfin, ajout d'une colonne avec les longueurs cumulés des segments, au fil des lignes du tableau. Donc, encore du boulot pour parfaire ce tableau !
  25. C'est absolument excellent bonuscad ! La seule remarque est d'avoir des rayons négatifs. ca doit pouvoir se corriger avec la valeur absolue de "rad". et les rayons de 0 en début de polyligne et segments droits. Il doit etre possible de conditionner la mise en place de ces textes à des valeurs non nulles. Merci encore bonuscad !
×
×
  • 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é