Aller au contenu

GEGEMATIC

Membres
  • Compteur de contenus

    1 416
  • Inscription

  • Dernière visite

  • Jours gagnés

    19

Tout ce qui a été posté par GEGEMATIC

  1. merci, j'aime bien me baser sur des exemples qui marchent, lorsque je n'ai plus de cervelle, mais qu'il faut que je trouve, que j'adapte ... pour la bouteille je déconne pas, envoi moi ton adresse.
  2. Génial, ça marche. je vais me coucher avec ce problème, et je me lève le voilà résolu ! à 22h55 ! Envoi moi ton adresse en message privé, un coup de main pareil, ça mérite une petite bouteille ... Par contre, par curiosité, j'aurai bien aimé savoir ce qui n'allait pas, à part le repeat en trop, dans ma gestion littérale des saffearray. sachant qu'avec ta methode, que j'ignorais, c'est nettement p^lus simple et plus clair. Merci merci !
  3. Merci beaucoup du décrottage, et de l'exemple d'obtention d'une liste directement assimilable par lisp, au lieu de ces ignobles safferarray ... Mais ... (il y a un mais) dans mon cas, l'onglet contient un cartouche et une fenêtre délimitée. avec les 2 versions du programme, j'obtiens - un onglet - le cartouche - une fenêtre delimitée ayant une rapport d'échelle bidon - une fenêtre non délimitée ayant un rapport d'echelle correct, mais une position de zoom incorrect, dépassant le cadre les 2 fenetres sont actives si j'efface la fenetre non délimitée, je ne peut plus cliquer à l'exterieur du cadre. je ne peux faire espaco, autocad me dit qu'aucune fenêtre est active ... bizarre bizarre ... encore merci Gégé
  4. salut, j'ai besoin sans arrêt de copier de nombreuse fois une présentation. comme je m'y colle, je vois que LE MEME JOUR, Falvignard et matthieu se penchent sur la question en VBA http:// news://discussion.autodesk.com:119/5751328@discussion.autodesk.com ou http://discussion.autodesk.com/thread.jspa?messageID=5751818&tstart=0 Plutôt que de péniblement adapter leur code vba à mon problème ,j'essaye de le traduire en lisp ça marche presque, car ça plant à la dernière ligne: Erreur Automation. Aucune description n'a été entrée. j'ai du oublier qq chose, mais quoi ? merci de votre aide ;;************************************************************************** ;§/traces/copie l'onglet courant n fois/none (defun c:copie_onglet_courant ( / acadObject acadDocument layout_col nb i name taborder lres) (vl-Load-Com) (setq aclay (get_aclayout)) ;(pw_getintmem "\nNombre de copies ?" "layout-number") (setq layout-number (getint "\nNombre de copies ?")) ;(setq pc (car (pw_vlax_list_items (vla-get-plotconfigurations pw-acaddocument)))) (repeat layout-number (pw_copie_onglet aclay layout-number) ) ) ;;************************************************************************** ;§/traces/copie l'onglet nb fois/layout nb (defun pw_copie_onglet (objLayoutSource nb / acadObject acadDocument layout_col nb i name taborder lres) ;;;Function CopierPresentation(objLayoutSource As AcadLayout, strNomNouveauLayout As String) As AcadLayout ;;;Dim objLayout As AcadLayout ;;;Dim objArray() As Object ;;;Dim i As Integer ;;;Dim intBlockCount As Integer ;;; ;;; On Error Resume Next ;;; ;;; 'Additionner la nouvelle présentation (setq nom (vla-get-name objLayoutSource)) (setq layouts (vla-get-Layouts pw-acaddocument)) (repeat nb ;;(setq strNomNouveauLayout (pw_inc_ch nom 1)) (setq strNomNouveauLayout (strcat nom (getstring "\nSuffixe ?"))) ;;; Set objLayout = ThisDrawing.Layouts.Add(strNomNouveauLayout) (setq objLayout (vla-add layouts strNomNouveauLayout)) ;;; ;;; objLayout.CopyFrom objLayoutSource (vla-Copyfrom objLayout objLayoutSource) ;;; ;;; intBlockCount = objLayoutSource.Block.Count (setq intBlockCount (vla-get-count (vla-get-block objLayoutSource))) (setq objArray (vlax-make-safearray vlax-vbObject (cons 0 (- intBlockCount 1)))) ;;; If intBlockCount Then ;;; ReDim objArray(intBlockCount - 1) (setq i 0) (repeat (- intBlockCount 1) ;;; ;;; 'Reprendre les éléments associé à la présentation ;;; For i = 0 To intBlockCount - 1 ;;; Set objArray(i) = objLayoutSource.Block.Item(i) ;;; Next i (vlax-safearray-put-element objArray i (vla-item (vla-get-block objLayoutSource) i)) (setq i (+ 1 i)) ;;; ;;; 'Copier les éléments de la présentation sur la nouvelle présentation ;;; ThisDrawing.CopyObjects objArray, objLayout.Block ;;; c'est la que ça plante : (vla-CopyObjects pw-acaddocument objArray (vla-get-block objLayout)) ) ) ) ;;************************************************************************** ;§/traces/retourne l'onglet courant / none ;; (defun get_aclayout ( / acadObject ) (setq acadObject (vlax-get-acad-object)) (setq pw-acaddocument (vla-get-ActiveDocument acadObject)) (vlax-Get-property pw-acaddocument 'ActiveLayout) )
  5. Merci a Didier, ça routine m'a vraiment été utile. et j'étais loin de prendre les choses dans le bon sens. J'ai du adapter le code à mon besoin, retourner seulement les z des sommets de polylignes, en ignorant les intersections avec les arretes de 3dfaces. je le tiens à disposition, mais c'est un vrai foutoir avec beaucoup de références à des routines de powerclic. salut
  6. Merci de ta réponse: D'après ce lien: http://81.255.107.140/Docs_Logiciels/Atlas/index.htm il semble que pour les version V1 à V2+ de la norme cart200, il n'y ai pas de règle. pour la norme V3, le systeme de coordonnées apparait dans le nom de fichier. (Je n'ai jamais eu de norme V3 ...) Salut
  7. Bonjour, j'aimerai savoir quel est le systeme de coordonnées utilisé par EDF ? Es-ce un systeme standard que l'on peu trouver dans Autodesk map ? Merci.
  8. Donc je reposte ici la version complète. comme je le dit dans le commentaire, cette routine est largement préférable à dictadd. ;;************************************************************************** ;;§/dictionaries/creation d'un dictionaire et d'un xrecord en utilisant simplement le lisp / DictName XrcdName datalist ;;n'est pas limité a 369 pour le code de groupe, comme dictadd l'est ;;donc à préférer à dictadd, car en plus, la syntaxe est plus claire. ;;teste l'existence du dictionnaire et de l'Xrecord, ne les écrase pas ;;avec l'aide de Patrick_35 http://www.cadxp.com/sujetXForum-16533.htm ;;exemple d'utilisation: ;; (pw_write_dict_xrecord "Nom_de_dictionaire" "Nom_de_Xrecord" '((1040 . 99.99) (1040 . 99.99) (1005 . "Une chaine"))) (defun pw_write_dict_xrecord (DictName XrcdName datalist / dict doc arraySpace ArrayType ArrayValue record) ;; Plus besoin de recalibrer les tableaux. Maintenant c'est automatique (setq arraySpace (vlax-make-safearray vlax-vbInteger (cons 0 (1- (length datalist))) ) ) (setq ArrayType (vlax-safearray-fill arraySpace (mapcar 'car datalist) ) ) (setq arraySpace (vlax-make-safearray vlax-vbvariant (cons 0 (1- (length datalist))) ) ) (setq ArrayValue (vlax-safearray-fill arraySpace (mapcar 'cdr datalist) ) ) ;; Traduction de la partie Vba (setq doc (vla-get-activedocument (vlax-get-acad-object))) (if (vl-catch-all-error-p (setq dict (vl-catch-all-apply 'vla-item (list (vla-get-dictionaries doc) DictName) ) ) ) (setq dict (vla-add (vla-get-dictionaries doc) DictName)) (princ (strcat "\nLe dictionaire " DictName " existe déjà") ) ) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list dict XrcdName)) ) (progn (setq record (vla-AddXRecord dict XrcdName)) (vla-SetXRecordData record ArrayType ArrayValue ) ) (princ (strcat "\nL'Xrecord " XrcdName " existe déjà") ) ) )
  9. Très bien, c'est nettement plus pratique comme ça ... j'avais oublié que les vla- se comportent comme le VBA, et que c'est la commande propre au lisp dictadd qui est verrouillée. merci, A+ Gégé
  10. Salut et merci pour ce truc génial! J'ai ce projet en chantier depuis 2 ans, je l'avais, pour le fun, fait en VBA, car l'exemple transformby dont j'étais parti était en VBA. Je me suis heurté rapidement au problème de l'inversion de matrice, et au stockage de la dernière matrice utilisée, ce qui n'est pas simple en vba ... la ton truc est vraiment simple, il fallait y penser ... Par contre, il reste le problème du point d'insertion des attaributs: J'ai donc modifié le code pour que les attribut reste dans le plan de leur bloc: c'est mieux, mais ce n'est pas parfait: dans bien des cas, il reste un décalage en z égal au delta y entre le point d'insertion du bloc et le pt d'insertion de l'attribut: je ne comprends vraiment pas ? ;; Pivote les textes et blocs dans le plan de la vue courante ;;version ultra simple par Gile : ;;http://www.cadxp.com/sujetXForum-15754.htm (defun c:r2v (/ doc ins dir att attins) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-StartUndoMark doc) (if (ssget '((0 . "INSERT,*TEXT"))) (vlax-for obj (vla-get-ActiveSelectionSet doc) (setq ins (vla-get-InsertionPoint obj) dir (mapcar '- (trans (getvar "viewdir") 1 0) (trans '(0 0 0) 1 0) ) ) (if (and (= (vla-get-ObjectName obj) "AcDbBlockReference") (setq att (vlax-invoke obj 'GetAttributes)) ) ;;traite les attributs ;;stocke le pt d'insertion et normalise (setq att (mapcar '(lambda (a) (setq attins (vla-get-InsertionPoint a)) (vla-put-Normal a (vlax-3d-point dir)) (list a attins) ) att ) ) ) ;;traite les blocs : noprmalise et repositionne (vla-put-Normal obj (vlax-3d-point dir)) (vla-put-InsertionPoint obj ins) ;;traite les attributs ;;repositionne (foreach a att (vla-put-InsertionPoint (car a) (cadr a)) ) ) ) (vla-EndUndoMark doc) (princ) )
  11. GEGEMATIC

    échanges Covadis VRD

    Bingo ! Il est vraiment possible de créer un obstacle VRD covadis par la programmation lisp/VBA: Il suffit d'écrire le Xrecord adhoc ayant le nom correspondant au handle de l'obstacle, dans le dictionnaire RESEVRD-OBSTACLE Pour les conduites, ça m'a l'air plus compliqué, à cause des réacteurs persistants: je vais me contenter d'obstacles ...
  12. En fait, j'ai utilisé le même type de code, mais en visual lisp, il y a un controle qui fait que le code de groupe est limité à 369: Cette limitation n'existe pas en VBA Pour contourner ce problèeme, j'ai donc fait une commande en VBA qui comunique avec le lisp grace à VLAX.CLS Il reste un petit bug sur le test d'existence du dictionnaire, mais Sigecom ou matthieu vont bien me régler ça ... En tout cas, avec ce "kit", les visualispiens peuvent écrire des Xrecord avec les codes qu'ils veulent : Le kit est en deux parties, une VBA, et une lisp ... La partie VBA : 'les routine suivantes doivent être placées dans le module Thisdrawing de VLAX.DVB 'ou être dans un projet contenant la classe VLAX de Franck Ockendo 'Routine pour créer un dictionnaire dictName s'il n'existe pas, 'et lui écrire un xrecord XrcdName Sub addDictionnary(ByVal dictName As String, ByVal XrcdName As String, ByVal arrayDataType, ByVal arrayDataValue) Dim dict As AcadDictionary Set dict = ThisDrawing.Dictionaries.Item(dictName) If IsNull(dict) Then Set dict = ThisDrawing.Dictionaries.Add(dictName) End If Set record = dict.AddXRecord(XrcdName) record.SetXRecordData arrayDataType, arrayDataValue End Sub 'Routine appellée par la commande lisp Sub vlaxWriteDicXrecord() 'Creation d'une instance VLAX pour discussion VBA - VLISP Dim VlaEvaluator As VLAX Set VlaEvaluator = New VLAX ' Assumes your symbol is named Vba-VlaxArrayType Set VlaEvaluator = Nothing Dim obj As VLAX, lspArray, lspArrayValue Set obj = New VLAX lspArrayType = obj.GetLispSymbol("Vba-VlaxArrayType") lspArrayValue = obj.GetLispSymbol("Vba-VlaxArrayValue") lspDictName = obj.GetLispSymbol("Vba-VlaxDictName") lspXrcdName = obj.GetLispSymbol("Vba-VlaxXrcdName") 'addDictionnary "nom_de_dict", "nom_de_xrecord", lspArrayType, lspArrayValue addDictionnary lspDictName, lspXrcdName, lspArrayType, lspArrayValue End Sub LA PARTIE LISP ;;routine lisp appellant le programme VBA pour pouvoir créer un Xrecod avec un code supérieur à 369 (defun c:try () (setq Vba-VlaxDictName "Nom_de_dictionaire") (setq Vba-VlaxXrcdName "Nom_de_Xrecord_2") (setq Dtype '(1040 1040 1005)) (setq arraySpace (vlax-make-safearray vlax-vbInteger '(0 . 2) ) ) (setq Vba-VlaxArrayType (vlax-safearray-fill arraySpace Dtype)) (setq dValue '(99.99 99.99 "Une chaine")) (setq arraySpace (vlax-make-safearray vlax-vbvariant '(0 . 2) ) ) (setq Vba-VlaxArrayValue (vlax-safearray-fill arraySpace dValue)) (vl-vbarun "vlaxWriteDicXrecord") )
  13. GEGEMATIC

    échanges Covadis VRD

    Les réseaux sont au format DWG, avec des données d'objet AutocadMap attachées, qui contiennent des info comme diametre, matériau, cote fil d'eau etc. transormer toutes ces polylignes en réseau Covadis va être très long, et ça implique une nouvelle erreur humaine que j'aimerai éviter. Mais si je suis obligé d'y passer, je le ferais... Salut
  14. Merci de ton attention, mais je ne cherche pas à écrire des Xdatas, mais bien un Xrecord dans un dictionnaire. Ce que j'ai cité comme liste est extrait d'un Xrecord de Covadis sur un obstacle. Sigecom m'a donné la solution, en VBA, les codes supérieurs à 369 passent tranquiles. Le lisp intègre lui un controle. il me reste à interfacer ma routine VBA avec le lisp, et là c'est la galère, toujours a cause de ces maudits types que VBA recrache, alors que nous, en lisp, on s'en fout !! A+ Gégé
  15. Bonjour, J'aimerai créer un xrecord avec un code supérieur à 369: L'aide d'autocad dit : Codes de groupe Xrecord Code de groupe Description 100 Marqueur de sous-classe (AcDbXrecord) 280 Drapeau de clonage d'enregistrement dupliqué (indique comment fusionner les entrées en double) : 0 = Non applicable 1 = Conserver l'élément existant 2 = Utiliser un clone 3 = $0$ 4 = $0$ 5 = Ne pas modifier le nom 1-369 (sauf 5 et 105) Ces valeurs peuvent être utilisées par une application quelle qu'elle soit Mais moi je trouve des Xrecord (Covadis) : ((-1 . ) (0 . "XRECORD") (5 . "CF") (102 .. "{ACAD_REACTORS") (330 . ) (102 . "}") (330 . d'entité: 7359e6d8>) (100 . "AcDbXrecord") (280 . 1) (1000 . "préfixe Elec2") (1000 . "Libelé Obstacle électrique") (1000 . "Electricité") (1040 . 8.88) (1040 .. 0.0) (1040 . 1.0) (1040 . 1.0) (1040 . 1.0) (1005 . "0")) Donc on peu écrire des codes supérieurs à 369 mais quand j'essaye (par le lisp) j'obtiens une erreur: "groupe DXF incorrect: (1000 . \"Libelé Obstacle électrique\")" Des idées ? En VBA, c'est pareil ? --
  16. Bonjour, Je dispose de plans de réseaux existant très bien structuré, conteant des information de diametre, matériau et fil d'eau. Dans le cadre d'un projet très lourd, j'aimerai pouvoir les transformer en canalisation covadis, (ce serait le top) ou en obstacles. (moins bien). Le menu échange est mal documenté. Peut être que Moss ou e-file sont des format faciles à écrire, et qui pourraient me servir de fichier d'échange ? J'ai également scruté la piste de la création de canalisation covadis par la programmation: Il faut creer un réacteur et une xrecord : Qq a-t-il déja exploré cette possibilité ? Ou la génération d'un obstacle ? Merci Gérald
  17. Salut, Dès lors, sans polémiquer, je ne vois pas trop l'intérret d'object dcl. Dépendre, pour ses développements, d'un arx dont on ne maitrise rien, c'est un gros problème. Le VBA nous offre des dialogues faciles à créer/manager, et la classe VLAX permet de dialoguer entre les deux. Il y a un peu de travail pour faciliter les échanges de varibale, les formaliser, mais ça me parrait une piste plus interressante. J'avoue n'avoir pas encore beaucoup creusé le sujet, (je ne suis pas un passionné d'interface graphiques), et peut être que la solution VBA mène à des impasses. A voir.
  18. GEGEMATIC

    Connexion Autocad excel

    D'autant plus que winfield n'en a pas besoins, avec le VBA ! Mais apparement, l'API d'open office est déroutante pour les utilisateurs d'API Windows. Il reste à transcrire les primitives d'écriture lecture fermeture ...
  19. GEGEMATIC

    Connexion Autocad excel

    Bingo ! La voie est libre: le mysterieux args s'appelle maintenant openpar , comme open parametre . car c'est de ces parametres d'ouvertures que ces veinards de VBAtistes n'ont pas besoin, alors que les vlispiens ne peuvent s'en passer. J'ai laissé en commentaire toutes les lignes VBA dont je me suis inspiré. ;****************************************************************************** ;§/openoffice/ Ouvrir une feuille de calcul vierge OOo en utilisant l'API OOo pour VB / none ;;site web de réference : ;;http://www.kalitech.fr/clients/doc/VB_APIOOo_fr.html ; (defun acad2oOOsCalc ( / Oprop openPar) ;;;Set serviceManager = CreateObject("com.sun.star.serviceManager") (setq serviceManager (vlax-create-object "com.sun.star.serviceManager") ) ;;;Set Desktop = serviceManager.createInstance("com.sun.star.frame.Desktop") (setq Desktop (vlax-invoke-method serviceManager 'createInstance "com.sun.star.frame.Desktop" ) ) ;;;LoadParams:=VarArrayCreate([0,-1],varVariant); (setq openPar (vlax-make-safearray vlax-vbVariant '(0 . 2))) ;;;'On appelle la fonction setOOoProp définie précédemment pour récupérer la structure ;;; Set OpenPar(0) = setOOoProp("ReadOnly", True) (setq Oprop (setOOoProp "ReadOnly" :vlax-true)) (vlax-safearray-put-element openPar 0 Oprop) ;;; Set OpenPar(1) = setOOoProp("Password", "secret") (setq Oprop (setOOoProp "Password" "secret")) (vlax-safearray-put-element openPar 1 Oprop) ;;; Set OpenPar(2) = setOOoProp("Hidden", False) (setq Oprop (setOOoProp "Hidden" :vlax-false)) (vlax-safearray-put-element openPar 2 Oprop) ;;;Set DocumentoOOo = Desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, openPar) (Setq DocumentoOOo (vlax-invoke-method Desktop 'loadComponentFromURL "private:factory/scalc" "_blank" 0 openPar ) ) ) ;****************************************************************************** ;§/openoffice/ Paramétrer les propriétés d'un objet de l'API OOo en VB / cName uValue ;; Certaines propriétés d'objet de l'API OOo sont du type structure. ;;Pour des raisons liées à l'implémentation du pont UNO-Automation ;;(cf http://api.openoffice.org/docs/DevelopersGuide/ProfUNO/ProfUNO.htm#1+4+4+5+3+Usage+of+Types), ;;on ne peut passer directement une structure VB en argument d'une fonction de l'API OOo. A partir de VB, ;;il faut donc utiliser une fonction particulière de l'API (Bridge_GetStruct) ;;pour accéder aux structures et pouvoir ensuite passer cette structure à la fonction OOo (defun setOOoProp (cName uValue / oSM oPropertyValue) ;;;Function setOOoProp(cName, uValue) As Object ;;; ;;; Dim oPropertyValue As Object ;;; Dim oSM As Object ;;; ;;; Set oSM = CreateObject("com.sun.star.ServiceManager") (setq oSM (vlax-create-object "com.sun.star.serviceManager")) ;;; Set oPropertyValue = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") (Setq oPropertyValue (vlax-invoke-method oSM 'Bridge_GetStruct "com.sun.star.beans.PropertyValue" ) ) ;;; oPropertyValue.Name = cName (vlax-put-property oPropertyValue 'Name cName) ;;; oPropertyValue.Value = uValue (vlax-put-property oPropertyValue 'Value uValue) ;;; ;;; Set setOOoProp = oPropertyValue ;;; ;;;End Function oPropertyValue )
  20. GEGEMATIC

    Connexion Autocad excel

    J'ai finit par appuiyer 2 fois: Je trouve cadXp très très lent ces jours ci: vous aussi, ou c'est mon poste, ma connexion ? [Edité le 8/6/2007 par GEGEMATIC]
  21. GEGEMATIC

    Connexion Autocad excel

    Le plus simple serait peut être d'utiliser VLAX class, pour exporter vers vba des variables lisp (globales): document, feuille, case x, case Y, Valeur, et d'appeleler deux routines VBA (sans arguments), une pour ecrire valeur, l'autre pour lire valeur. c'est pas très beau, mais ça devrait marcher ... Et il suffit parfois qu'on se décide à contourner un obstacle, la rage au coeur, pour trouver comment le passer, une fois qu'on a vu sa face cachée ...
  22. Voilà un outil qui me permet d'explorer la tortueuse structure d'Autocad Il utilise le handle pour se promener dans les dictionaires, les xrecord et autres atrocité Autocadiennes ... Pour avoir de handle cours, il vaut mieux créer un nouveau dessin contenant le strict minimum de ce que l'on veux explorer Il peut être utile d'obtenir l'handle d'un objet situé en sommet de pyramide, mais on peut parfois partir d'un objet du dessin, pour remonter la hiérarchie pour info, exemple de recherche d'un element sommet de hierachie (setq doc (vla-get-activedocument (vlax-get-acad-object))) ;;acceder à la table (collection) LAYER (setq ObjTablLayer (vla-get-layers doc)) (prompt "\nEntget de la table layer ") (print (setq egtabl (entget (vlax-vla-object->ename ObjTablLayer )))) Le prog handle explorer: il utilise 2 fonctions de la librairie powerClic, pw_getstringmem et pw_getkwordmem, qui servent à garder en mémoire la question utilisateur. Il est donc facile de s'en passer. Ce qui serait bien, c'est de pouvoir explore les methodes et propriété de l'objet en cours, c'est le todo, mes on verra ... ; **************************************************************************** ;;§/dxf/Exploration autour d'un handle vers les entités présentes /none ;;les code rechercés sont 330,340,350,360 ;;;330 ID/identificateur pointeur logiciel du dictionnaire propriétaire (facultatif) ;;; ;;;360 ID/identificateur de propriétés matérielles du dictionnaire propriétaire (facultatif) ;;; ;;;330 ID/identificateur pointeur logiciel de l'objet propriétaire ;;; ;;;350 ID/identificateur propriétaire logiciel de l'objet entrée (un pour chaque entrée) (facultatif) ;;autres codes : ;;;331 ID/identificateur de la dernière fenêtre active dans la présentation lorsque celle-ci était la présentation courante. ;;; ;;;345 ID/identificateur de l'énumération AcDbUCSTableRecord s'il s'agit d'un SCU nommé. En cas d'absence, le SCU n'est pas nommé ;;; ;;;346 ID/identificateur de l'énumération AcDbUCSTableRecord du SCU de base s'il s'agit d'un SCU orthogonal (code 76 différent de 0). En cas d'absence et si le code 76 est différent de 0, le SCU de base est du type GENERAL (defun c:handle_explorer ( / eg i cont ident eg2 dxf id) (pw_getstringmem "\nMaintien de l'entité ?" "ident") (print (setq eg (entget (handent ident)))) (prompt "\n - * - * - * - * - * - * - * - * - * - * - * - * - *") (setq i 0 cont "Oui" ) (while (setq dxf (nth i eg)) (if (member (car dxf) '(330 331 340 345 346 350 360 390 )) (if (setq eg2 (entget (cdr dxf))) (progn (setq id (cdr (assoc 5 eg2))) (prompt (strcat "\n Code " (itoa (car dxf)) " trouvé: " id " ")) (prin1 (cdr dxf)) (pw_getkwordmem "\nAfficher l'entget entité ?/Oui Non" "cont") (if (= "Oui" cont) (progn (print eg2) (prompt "\n- - - - - - - - - - - - - -")) ) ) (prompt "\nEntité sans entget: ename = 0") ) ) (setq i (+ 1 i)) ) )
  23. Salut Pour les filtres à un niveau, pas de problème. Mais pour les filtre à plusieurs niveaux, Ce n'est pas evident, et je n'ai pas eu le temps d'aller jusqu'a la création, mais j'ai résussi à percer le mystere de ces filtres en cascade: Tu as un sujet exprès sur planetar : http://news://news.planetar.net:119/elmvn8$5r1@planetar.CADFRANCE A partir de là, ya plus qu'a, mais le temps me manque... Gégé [Edité le 7/6/2007 par GEGEMATIC]
  24. GEGEMATIC

    Connexion Autocad excel

    Je ne l'ai évoqué que comme une solution possible, mais pour moi, le jeu n'en vaut pas la chandelle: trop lourd, trop long, trop de bugs potentiels, et impossible à péréniser, avec des version différentes de 2 logiciels ... Je l'ai essayé, ça marche bien, mais le gros du programme se concentre sur la problematique du cartouche utilisateur. Donc les primitives que tu as diffusé me suffisent ... Si tu arrive à décoincer le début, après la voie et libre pour adapter les différents programmes disponibles. Je ne manquerait pas de publier le résultat de mon travail. mais je ne suis pas arrivé à passer le 1er barage, alors on en lest loin ... Pour l'instant, je n'envisage pas de développer sur la base d'excel, je préfère OpenOffice, que j'ai lui, sur tous mes postes ... A+ Gégé
  25. GEGEMATIC

    Connexion Autocad excel

    Je finit par penser que l'exemple magique que je crois avoir vu n'est qu'un mirage maintenant, il doit être réalisable, en utilisant un evennement à l'echelle de window Je parle un peu dans le flou, mais je pense que ce n'est pas accessible en VBA, ni en lisp, mais seulement avec un langage type VB, .NET ou C Maintenant on peut faire "comme si", en emulant ce lien: Coté Autocad, un reacteur qui déclanche une mise à jour d'excel, et coté Excel, un evenement qui déclanche une mise à jour d'Autocad Malheureusement, l'Objet Desktop ne reagit pas à vlax-dump-object ! c'est toute la difficulté, on ne peut pas avoir d'info via l'explorateur d'objet: il faut se réferer à la doc de l'API OOo ... J'ai re-fait un tour sur les fonctions MAP DBCONNECT: C'est nul. Archi nul: ça ne gère que les entité BLOC ou TEXTE! J'entrevois les possibilité d'une liaison entre une simple feuille excel et n'importe quel type d'entité, et je me rends compte que je recherche ça depuis longtemps ...
×
×
  • 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é