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. Salut benhur: qu'entend tu par "du mal à activer powerdraft ?" Moi j'ai une quadro fx 4500, l'affichage des facettes est précis, mais par contre, sur les gros dessin, c'est d'une lenteur affligeante, et souvant ça plante ! du coup j'ai essayé ton driver, mais ça ne marche tjs pas mieux ! je suuis sous la 2006, alors je me demande si je ne devrais pas retourner à un version du driver de la 2006 ? car quand j'installe PowerDraft, j'ai un menu "sélectionnez les fonction à installer", mais ce menu est vide !
  2. GEGEMATIC

    patch 10 c

    Salut, chez moi le patch installe bien le menu autopiste, et dans l'install de covadis, autopiste est bien présent, mais pas sur le disque ! celui ci ne contient que des fichiers ict Le module VRD marche bien en version 10.1.a, mais plus en version 10.1.c J'appelle le SAV Covadis ...
  3. GEGEMATIC

    patch 10 c

    Bonjour, Le patch 10c à installé Autopiste, que je n'ai pas. j'ai modifié l'installation de covadis pour enlever Autopiste, mais depuis le module vrd de covadis ne marche plus ! Vous confirmez ?
  4. voilà un lien ou on peux voir les possibilité de map 2 html http:// http://www.g-eaux.com/pages_perso/caid/ Avec IE, on a même droit à des infos-bulles (pas avec firefox) le fichier autocad source: http:// http://www.g-eaux.com/pages_perso/caid/contours_communes_savoie_LIIe_caid.dwg les images en références sont à télécharger depuis le site web (clic droit enregister sous) J'espère que ça peux aider gégé
  5. Oups, désolé pour l'oubli de la surveillance du sujet ... PowerClic ne marche certainement pas avec autocad 2009, en tout cas, je ne l'ai jamais testé avec cette version. Je vais bientôt passer à la 2009, j'en profiterai pour mettre à jour PowerClic Par contre, charger le vlx de PowerClic devrait suffire à faire marcher les routines que j'ai présenté. J'aimerai bien mettre PowerClic en openSource, le problème c'est que certains composants (rares) ne m'appartiennent pas, et la personne qui les a développé n'était pas d'accord pour l'open source. Il faudrait que je trie tout ce merdier, et je n'ai pas le temps, désolé. Je vais certainement devoir mettre à jour ma carte html, j'en profiterai pour noter un mode opératoire.
  6. Pour répondre sur le forum Autodesk: Ci joint le code disponible pour faire ceci: Pour fonctionner, il faut au minimum les librairies de PowerClic Je n'ai plus utilisé ce code depuis, je sais que ça marchait sans pb, mais je ne me rappelle plus le mode opératoire exact. Je pourrai mettre un exemple de résultat en ligne, ça ça peu se faire assez vite. ;;******************************************* ;;MAP HTML ;;******************************************* ;§/HTML/ecrit l'entête Données associées/ f ; (defun write_entete_donnees ( f ) (write-line "[b]<[/b]TABLE >" f) (write-line "[b]<[/b]TR>" f) (write-line "[b]<[/b]TD>" f) (write-line "[b]<[/b]TABLE >" f) (write-line "[b]<[/b]H2>Données associées[b]<[/b]/H2>" f) (write-line "[b]<[/b]/TR>" f) (write-line "[b]<[/b]/TD>" f) ) ;;******************************************* ;§/HTML/ecrit un entête MAP/str f ;[b]<[/b]MAP name="map"> (defun write_map_header ( str f ) (write-line (strcat "[b]<[/b]MAP name=\"" str "\">") f) ) ;;******************************************* ;§/HTML/ecrit une fin MAP/ f ;[b]<[/b]/MAP> (defun write_map_footer ( f ) (write-line "[b]<[/b]/MAP>" f) ) ;;******************************************* ;§/HTML/ecrit une AREA Circulaire/cercl href f ;[b]<[/b]AREA shape="circle" coords="73,73,72" href="../../plongee/index.html"> (defun write_area_circle ( cercl href title f / ray ) (if (= "CIRCLE" (cdr (assoc 0 (setq eg (entget cercl))))) (setq ray (cdr (assoc 40 eg))) (setq ray ade-html-rayon) ) (setq lacoord (list (cdr (assoc 10 eg )))) (setq coords (pixel_coords lacoord)) (setq ray (itoa (fix (* ade-html-fpix ray)))) (setq coords (strcat coords "," ray)) (write-line (strcat "[b]<[/b]AREA shape=\"circle\" coords=\"" coords "\" href=\"" href "\" title=\"" title"\" target=\"donnees\" >" ) f) ) ;;******************************************* ;§/HTML/ecrit une AREA Rectangulaire/rect f ;[b]<[/b]AREA shape="rect" coords="60,123,242,190" href="../../nucleaire/index.html"> (defun write_area_rect_hyper ( rect f) (setq lacoord (pw_lsomm rect)) (setq lacoord (list (car lacoord) (nth 2 lacoord))) (setq coords (pixel_coords lacoord)) (setq href (car (retourne_hyperliens rect))) (write-line (strcat "[b]<[/b]AREA shape=\"rect\" coords=\"" coords "\" href=\"" href "\">") f) ) ;;******************************************* ;§/HTML/ecrit une AREA Poly avec l'hyperlien contenu/epol f ;[b]<[/b]AREA shape="polygon" coords="88,58,297,58,254,171" href="../../musique/index.html"> (defun write_area_polygon_hyper ( epol f / lacoord coords) (setq lacoord (simplifie_contour epol)) (setq coords (pixel_coords lacoord)) (setq href (car (retourne_hyperliens epol))) (write-line (strcat "[b]<[/b]AREA shape=\"polygon\" coords=\"" coords "\" href=\"" href "\">") f) ) ;;******************************************* ;§/HTML/ecrit une AREA Poly avec l'hyperlien spécifié/epol href f ;[b]<[/b]AREA shape="polygon" coords="88,58,297,58,254,171" href="../../musique/index.html"> (defun write_area_polygon ( epol href title f / lacoord coords ) (setq href (strcat "donnees/" href)) (setq lacoord (simplifie_contour epol)) (setq coords (pixel_coords lacoord)) ;title="74 - Limousin" (write-line (strcat "[b]<[/b]AREA shape=\"polygon\" coords=\"" coords "\" href=\"" href "\" title=\"" title"\" target=\"donnees\" >" ) f) ) ;;******************************************* ;§/HTML/ecrit une image usemap /usemap img width height f ;[b]<[/b]IMG USEMAP="#map" SRC="images/map.gif" border=0 WIDTH=300 HEIGHT=191> (defun write_img_usemap ( usemap img width height f) (write-line (strcat "[b]<[/b]IMG USEMAP=\"#" usemap " SRC=\"" img "\" border=0 WIDTH=" WIDTH " HEIGHT=" HEIGHT ">") f) ) ;;******************************************* ;§/HTML/convertie une série de coordonnées autocad vers des coordonnée en pixel/acoords (defun pixel_coords ( lacoords / lrect pbase res ) (setq lrect (pw_lsomm (ssname (ssget "x" '((0 . "LWPOLYLINE")(8 . "TI-FORMAT-TRACER"))) 0 ))) (setq pbase (car lrect)) (setq xbase (car pbase) ybase (cadr pbase)) (setq phaut (nth 2 lrect)) (setq xhaut (car phaut) yhaut (cadr phaut)) (setq largeTracer (- xhaut xbase)) (setq pixfo (pixels_du_format_actuel)) ;;attention : on présupose qu'il y a adéquation entre le format en pixels, et les element map ;;autrement dit, le facteur en x = le facteur en y (setq ade-html-fpix (/ (car pixfo) largeTracer)) (setq res (mapcar '(lambda (x) (list (fix (* ade-html-fpix (- (car x) xbase))) ;;la coordonée y part du coint haut gauche (fix (* ade-html-fpix (- yhaut (cadr x) ))) ) ) lacoords ) ) (setq res (pw_reduct_list res)) (pw_ch_de_lst (pw_flatten_list res) ",") ) ;**************************************************************************** ;§/poly/simplifie un contour, dans le but de le limiter à 100 pts/pt ;sert à créer un contour AREA MAP html (defun simplifie_contour (epol / lptaco lpt long englo dist coef resolu ) (setq lpt (pw_lsomm epol)) (setq long (pw_long_pol epol)) (setq englo (pw_englobe lpt)) (setq dist (distance (car englo)(cadr englo))) ;;100 correspond au nombre de pt maxi à atteindre (setq coef (/ (length lpt) 100.0)) ;;10 est arbitraire, comme également sqrt expt: c'est empirique, mais ça marche à peu près ;; (setq resolu (* 10 (fix (* (sqrt coef) (expt (/ long dist) 2.0))))) (setq resolu (/ (* (fix (* (sqrt coef) (sqrt long)))) 2.0) ) (debug_print 'coef) (debug_print 'resolu) (debug_print 'long) (debug_print 'dist) (princ) (setq lpt (pw_lpt_rnd lpt resolu)) ;;boucle jusqu'à obtenir 100 (while (> (setq nb (length (setq lptaco (contour_simplifie lpt resolu)))) 99) (setq resolu (* resolu (/ nb 100.0))) (debug_print 'nb) ) lptaco ) ;-------------------------------------------------------------------- ;§/poly/cree un contour simplifié à delta près/lpt delta ; (defun contour_simplifie ( lpt delta / p1 p2 p3 lptaco i ptaconserver) (setq p1 (car lpt)) (setq lptaco (list p1)) (setq i 2) (while (< i ( - (length lpt) 1)) (while (and (est_colineaire p1 (setq p2 (nth (- i 1) lpt)) (setq p3 (nth i lpt)) delta) (sont_colineaire p1 lptaverifier p3 delta) (< i ( - (length lpt) 1)) ) ;(if (> (distance p2 p3) delta) (setq lptaverifier (cons p2 lptaverifier)) ;) (setq ptaconserver p3) (setq i (+ 1 i)) ;(command "_redraw") ;(mapcar 'PW_FOCUS (list p1 p2 p3)) ) (if ptaconserver (progn (setq lptaco (cons ptaconserver lptaco)) (setq p1 ptaconserver) (setq ptaconserver nil) ) (progn (setq lptaco (cons p2 lptaco)) (setq p1 p2) ) ) (setq lptaverifier nil) (setq i (+ 1 i)) ) (pw_reduct_list lptaco) ) ;;******************************************* (defun c:try_arron2 ( / ) (setq lptaco nil) (setq epol (enam)) (setq lptaco (simplifie_contour epol)) (pw_setvar1 "cmdecho" 0) (command "_pline") (mapcar 'command lptaco) (command "_close") (pw_setvar2 "cmdecho") ) ;;******************************************* (defun c:try_html_rect ( / f) (setq fhtml (getfiled "Selectionnez le fichier html pour map" "" "HTML" 0)) (setq f (open fhtml "a")) (write_map_header "map" f ) (write_area_rect (enam) f) (write_map_footer f) (close f) ) ;;******************************************* (defun c:try_html_poly ( / g) (setq fhtml (getfiled "Selectionnez le fichier html pour map" "" "HTML" 0)) (setq g (open fhtml "a")) (write_map_header "map" g ) (write_area_polygon (enam) g) (write_map_footer g) (close g) ) ;;******************************************* ;§/HTML/exporte les données ade d'entités au format html/none ;; f = fichier de données (multiple) ;; g = fichier MAP unique (defun c:export_ade_html ( / ltablchamps g fhtml lfhtml) (pw_bydefault "ade-html-chemin" (getvar "dwgprefix")) (setq fhtml (getfiled "Selectionnez le fichier html pour map" ade-html-chemin "HTML" 0)) (setq lfhtml (pw_scie_fich fhtml)) (setq ade-html-chemin (car lfhtml)) ;;supprime la section map éventuellement présente (pw_cpt_occu_cop "Section map trouvée" "[b]<[/b]MAP*" fhtml "tmp") (pw_modif_fich (strcat (car lfhtml)(cadr lfhtml) ".tmp") fhtml '("") "[b]<[/b]MAP*" "[b]<[/b]/MAP>" ) (setq g (open fhtml "a")) (write_map_header "map" g ) (setq ade-html-entites (pw_ch_calques_msg ade-html-entites "Calques des entités à exporter en html :" )) (pw_getmemlvar "ade-html-entites" "Calques des entités à exporter en html :" "STR") (setq tlc (pw_ch_de_lst ade-html-entites ",")) ;;(setq sel (ssget "x" (list '(0 . "LWPOLYLINE,MPOLYGON")(cons 8 tlc)))) (PW_GETKWORDMEM "Type d'entités à exporter ?/Lwpolyline,mpolygon Point" "ade-html-type") (if (= "Point" ade-html-type) (PW_GETrealmem "\nRayon du cercle de Sélection?" "ade-html-rayon") ) (setq sel (ssget (list (cons 0 ade-html-type)(cons 8 tlc)))) (setq e0 (ssname sel 0)) (setq ltabl (AM_GETTABLES e0)) ;;choix des tables à exporter (setq ade-html-tables (pw_s_lchaines3 "Tables à exporter:" ltabl 1 ade-html-tables )) (pw_getmemlvar "ade-html-tables" "Tables à exporter:" "STR") (foreach table ade-html-tables (pw_getstringmem (strcat "\nTitre à afficher pour les données de la table " table " ?") (strcat "ade-html-intitule-" table)) (setq vchptable (strcat "ade-html-champs-" table)) (setq lchp (AM_GETTABLEFORMAT table)) (setq lchp (mapcar '(lambda (x) (strcat (nth 0 x) "$" (nth 1 x)) ) lchp ) ) (set (read vchptable) (pw_s_lchaines3 (strcat "Champs à exporter pour la table" table " :") lchp 1 (eval (read vchptable)) )) (pw_getmemlvar vchptable "Tables à exporter:" "STR") (setq tmp (mapcar '(lambda (x) (car (pw_lst_de_ch x "$")) ) (eval (read vchptable)) ) ) (setq ltablchamps (cons (list table tmp) ltablchamps)) ;;pour servir plus tard: (set (read (strcat "ade-html-champs-" table "-clef")) tmp) (pw_getmemlvar (strcat "ade-html-champs-" table "-clef") "pas de message" "STR") ) ;choix de la dénomination des liens (tabel champs clefs) ;;table (if (> (length ade-html-tables) 1) (setq ade-html-table-clef (car (pw_s_lchaines2 "Table du champ clef ? " ade-html-tables ade-html-table-clef))) (setq ade-html-table-clef (car ade-html-tables)) ) (pw_getmemlvar "ade-html-table-clef" "Table du champ clef ? " "STR") ;;champ (setq lchp (AM_GETTABLEFORMAT ade-html-table-clef)) (setq lchp (mapcar '(lambda (x) (strcat (nth 0 x) "$" (nth 1 x)) ) lchp ) ) (setq ade-html-champ-clef (car (pw_s_lchaines2 "Champ clef pour nom de fichier? " lchp ade-html-champ-clef))) (pw_getstringmem "\nPrefix à ajouter pour nom de fichier ?" "ade-html-champ-clef-pref") (setq ade-html-champ-title (car (pw_s_lchaines2 "Champ clef pour infobulle sur le liens ? " lchp ade-html-champ-title))) (pw_getmemlvar "ade-html-champ-title" "Champ clef pour infobulle sur le liens ?" "STR") (foreach epol (pw_listsel sel) (setq cc-lastent epol) (ecrit_ade_html epol) ) ;;le fichier MAP (g) (write_map_footer g) (close g) ) ;;******************************************* ;§/HTML/ecrie les données ade d'entités au format html/epol (defun ecrit_ade_html (epol / ltablchamps ldonn title f) (foreach table ade-html-tables (setq ldonn (cons (list (eval (read (strcat "ade-html-intitule-" table))) (pw_assoc_multi (eval (read (strcat "ade-html-champs-" table "-clef"))) (NA_GetfieldDescData epol table) ) ) ldonn ) ) ) ;;nom du fichier: champs clef (setq nfich (strcat "donnees/" ade-html-champ-clef-pref (pw_guil_make (V5_GETEVAR epol ade-html-table-clef (car (pw_lst_de_ch ade-html-champ-clef "$")))) ".html")) ;;title="TITLE SAINT-JEAN-DE-MAURIENNE" (setq title (pw_guil_make (V5_GETEVAR epol ade-html-table-clef (car (pw_lst_de_ch ade-html-champ-title "$"))))) (if (not (wcmatch nfich "*'nil*" )) (progn ;;l'area MAP (cond ((= "POINT" (strcase ade-html-type)) (write_area_circle epol nfich title g) ) (T (write_area_polygon epol nfich title g) ) ) (setq f (open (setq nfich (strcat ade-html-chemin nfich)) "w")) ;;les données (write_entete_donnees f) ;;ecrit le tableau: (foreach l ldonn (write-line "[b]<[/b]TR>[b]<[/b]TD>" f) (write_h3 (car l) f ) (write-line "[b]<[/b]/TD>[b]<[/b]/TR>" f) (foreach ll (cadr l) (write-line "[b]<[/b]TR>[b]<[/b]TD>" f) (write-line (cadr ll) f ) (write-line "[b]<[/b]/TD>[b]<[/b]/TR>[b]<[/b]TR>[b]<[/b]TD>" f) (write-line (strcat "[b]<[/b]B>" (pw_guil_make (last ll)) "[b]<[/b]/B>") f ) (write-line "[b]<[/b]/TD>[b]<[/b]/TR>" f) ) ) (write-line "[b]<[/b]/TABLE >" f) (close f) ) (progn (Prompt "\nProbleme détecté") (pw_entmodifi epol 62 2) ) ) ) ; **************************************************************************** ;;§/INI/appel principal pour crire une variables dans un fichier ini spécifié par l'utilisateur/none (defun c:ecrini_ade_html ( / lvar fich f) (setq fich (getfiled "Fichier ini de variables à écrire : " ade-html-chemin "ini" 1)) (setq lvar (mapcar 'car pw-getmemlvar)) (setq lvar (pw_wcmatch_list lvar "ade-html*")) ;;effacement du fichier (setq f (open fich "w")) (write-line "" f) (close f) (foreach l lvar (pw_ecrini_ligne l fich) ) ) [Edité le 19/12/2008 par GEGEMATIC]
  7. Salut à tous, si j'utilise la version 77 depuis longtemps, je n'ai jamais eu en main les annexes qui vont avec, notement l'annexe AN VII pour les bassins quelqu'un a t-il ces annexes en pdf ? merci
  8. Cette année, comme partout, c'est pas très chaud, non, mais c'est peut être mieux pour les glaciers ? A+
  9. Moi je sais qu'avec autocad 2002, j'utilisai avec bonheur des cartes de type "gammer" avec autocad Depuis la 2006 ((j'avais sauté la 2004 et la 2005) je crois que ce n'est pas un bon calcul: en cause: des pilotes bridés pour les applis professionelles Du coup si j'utilise le mode direct 3d ou open gl avec ma 6600 GT, le rendu s'affiche bien mais en y regardant de + près, les arrêtes ou les grips ne sont pas en phase avec le facettes, donc ce n'est plus utilisable pour dessiner. Je crois qu'il faut du Fx pour réelement bosser en 3d, bien que sur le papier, ces cartes ne soient pas très différentes des cartes type gammer. Moralité, j'avais un affichage plus rapide en 3D avec autocad 2002 et une vielle Nvidia TNT de 128 Mo, en open gl, qu'avec une GT6600 de 256 mo et autocad 2006 Ma prochaine machine sera équipée d'une FX
  10. Salut, Avec la classe VLAX, c'est possible, et dans Exemple.dvb, j'ai fait un exemple de va et vient d'une variable entre vba et lisp Déconcertant pour un lispien la complexité d'avoir une variable publique et constante en vba ... mais ça se fait (Merci Matthieu) http:// http://www.g-eaux.com/pages_perso/vlax-class.dvb http://www.g-eaux.com/pages_perso/Exemple.dvb
  11. Salut, ci joint un fichier qui contient la biblio carto 200 (V5) en dwg le numéro des calque correspond au numéro microstation. http://www.g-eaux.com/pages_perso/exemple_edf_converti.dwg
  12. GEGEMATIC

    Connexion Autocad excel

    Je ne suis pas allé plus loin dans oOo depuis 1 an, mais j'ai simplement eu besoin d'ouvrir un fichier csv avec oOo (J'ai l'habitude de stocker la valeur des variables lisp dans des fichier ini, avec [monnomdevar] etc ... finalement, on gagne à l'écrire en csv car c'est éditable) Je fonctionnais avec un startapp, mais le chemin de l'appli n'était plus valable: et la stupeur: très simple d'ouvrir un fcihier xls ou ods, mais pour un csv, rien! j'ai galéré pour trouver le bon paramètre et voilà les 2 versuion, une pour xls, et l'autre pour csv Pw_slashit sert à transformer \\ ou \ en / ****************************************************************************** ;§/openoffice/ Ouvrir une feuille de calcul au format csv spécifiée en utilisant l'API OOo pour VB / feuille ;;site web de réference : ;;http://www.kalitech.fr/clients/doc/VB_APIOOo_fr.html ; (defun OpenCsvWithoOOsCalc ( feuille / Oprop openPar) (if (not feuille) (setq feuille (pw_slashit (getfiled "Feuille de calcul à charger : " (getvar "dwgprefix") "csv" 0)) ) ) (setq feuille (strcat "file:///" feuille )) ;;;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)) (setq Oprop (setOOoProp "ReadOnly" :vlax-false)) (vlax-safearray-put-element openPar 0 Oprop) ;;;;;; Set OpenPar(2) = setOOoProp("Hidden", False) (setq Oprop (setOOoProp "Hidden" :vlax-false)) (vlax-safearray-put-element openPar 1 Oprop) ;;; - * - * ;; attention, ce qui suit est primordial pour ouvrir du csv avec openoffice: ;;;Dim oPropertyValue(0) As New com.sun.star.beans.PropertyValue ;;;oPropertyValue(0).Name = "FilterOptions" ;;;oPropertyValue(0).Value = "44" ;;; ;;;oDoc = starDeskTop.loadComponentFromURL( oUrl, "_blank", 0, oPropertyValue ) (setq Oprop (setOOoProp "FilterOptions" "44"));_ 44 pour , car (ascii ",") = 44 ;;; (setq Oprop (setOOoProp "FilterOptions" "59"));_59 pour ; (vlax-safearray-put-element openPar 2 Oprop) ;;; ;;;mFileProperties(0).Name = "FilterName" ;;; ;;;mFileProperties(0).Value = "scalc: Text - txt - csv (StarCalc)" ;;; (setq Oprop (setOOoProp "FilterName" "scalc: Text - txt - csv (StarCalc)")) ;;; (vlax-safearray-put-element openPar 3 Oprop) ;;; ;;;Set DocumentoOOo = Desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, openPar) (Setq DocumentoOOo (vlax-invoke-method Desktop 'loadComponentFromURL feuille "_blank" 0 openPar ) ) ) ;****************************************************************************** ;§/openoffice/ Ouvrir une feuille de calcul spécifiée en utilisant l'API OOo pour VB / feuille ;;site web de réference : ;;http://www.kalitech.fr/clients/doc/VB_APIOOo_fr.html ; (defun OpenSpreadSheetWithoOOsCalc ( feuille / Oprop openPar) (if (not feuille) (setq feuille (pw_slashit (getfiled "Feuille de calcul à charger : " (getvar "dwgprefix") "ods;xls" 0)) ) ) (setq feuille (strcat "file:///" feuille)) ;;;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 . 1))) ;;;'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)) (setq Oprop (setOOoProp "ReadOnly" :vlax-false)) (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 1 Oprop) ;;;Set DocumentoOOo = Desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, openPar) (Setq DocumentoOOo (vlax-invoke-method Desktop 'loadComponentFromURL feuille "_blank" 0 openPar ) ) )
  13. Salut à tous, malheureusement, les liens ne fonctionnent plus ... alors ce serait sympa si quelqu'un pouvait à monpseudo@g-eaux.com ... merci
  14. Merci, C'est bien mieux, car c'est nettement plus rapide que de parcourir tous les blocs. Je note comment il récupère cette info sur l'imbrication: (102 . "{BLKREFS") : fallait y penser ... J'avais renoncé à utiliser une méthode élégante en voyant que le code suivant ne marche pas pour connaitre l'état d'imbrication, et j'ai remarqué qu'Autocad lui même s'emmêle les pinceaux d'une session à l'autre. ; **************************************************************************** ;;§/dxf/essai de retiurner des infos sur les xrefs/none ;returns a list of (xref_path block_name Resolved Referenced) ;;;>Non résolue ( ??? ) :: Ne peut pas être lue par AutoCAD. ;;;par exemple si tu es sous 2002 et que la ref est une 2004 ;;;Orpheline ( ??? ) : attachée à une autre xréf non référencée, non résolue ou non trouvée ;;;un ref imbriquée (de type attaché dans la xref que tu as dans ton dessin) et qui n'est pas résolue pour une des 3 raisons qu'ils citent ;;;(???) pour les deux derniers car je n'ai pas d'exemples ! ;;;pour l'état, c'est normalementr le code 70 : ;;; ;;;Drapeaux par type de bloc (valeurs binaires pouvant être combinées) : ;;;0 = indique qu'aucun des drapeaux suivants ne s'applique ;;;1 = bloc anonyme généré par hachure, cotation associative, d'autres opérations internes ou une application ;;;2 = ce bloc a des définitions d'attribut non constantes (ce bit n'est pas défini dans le cas contraire ou si le bloc n'a aucune définition d'attribut) ;;;4 = ce bloc est une référence externe (xréf) ;;;8 = ce bloc est un recouvrement de référence externe : ce qui veut dire superposé (sinon attaché bit = 0) ;;;16 = ce bloc a des dépendances externes : j'ai fait le test, ce bit n'est pas activé quand il devrait l'être en théorie ;;;32 = référence externe résolue ou dépendant d'une référence externe (bit ignoré à la saisie):ne permet pas de différencier une reference déchargée d'une introuvable ;;;64 = cette définition est une référence externe référencée (bit ignoré à la saisie) (defun GetXinfo ( / XrefInfo) (setq XrefInfo (list)) (setq Rewind t) (while (setq CurrBlock (tblnext "block" Rewind)) (setq Rewind nil) (setq Flags (cdr (assoc 70 CurrBlock))) (if (= (boole 1 Flags 4) 4) ; that means that this block in an xref (progn (print currblock) (setq NewXref (list (cdr (assoc 1 CurrBlock)) (cdr (assoc 2 CurrBlock)) (if (= (boole 1 Flags 32) 32) T nil ) ; that means that this block is a RESOLVED xref (if (= (boole 1 Flags 64) 64) T nil ) ; that means that this block is a REFERENCED xref ) ; list ) ; setq (setq XrefInfo (cons NewXref XrefInfo)) ) ; progn ) ; if block is an xref ) ; while XrefInfo ) ; defun
  15. Salut Comme j'ai eu besoin de cette fonctionnalité, puisqu' autocad ne retourne pas correctement les informations prévues dans la structure dxf (voir les drapeaux du code 70: toutes ces infos devraient pouvoir s'obtenir directement sans devoir parcourir l'ensemble des blocs : sauf qu'en réalité ça ne marche pas Du coup j'ai simplement repris et aménagé le code original, de façon à ce 3listes_xref présente ses résultats de manière plus agréable, et surtout que l'on sache qui référence qui, car c'est ça mon problème (plein de références croisées = ingérable) ;;******************************************************************************** ;§/xref/Pour récupérer les "noms" (vla-get-name) des Xrefs dans 3 listes/none ;;;xref-lst : les noms de toutes les Xrefs du dessin ;;;xref-lst1 : les noms des Xrefs "parents" (pouvant en contenir d'autres) avec la listes des xrefs filles (contenues par) ;;;xref-lst2 : les noms des Xrefs imbriquées dans les Xrefs de xref-lst1 ou dans celles de xref-lst2 ;;;(imbrication double ou triple ou plus...), les Xrefs les plus "profondément imbriquées" se trouvant en fin de liste. ;;idée originale par giles ;;post original: ;;http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=10289#pid ;; AcDoc : pointeur vers le document actif ;; ss : sélection de tous les blocs et Xrefs insérés sur les calques dévérouillés (defun 3listes_xref () (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) ss (ssget "_X" '((0 . "INSERT"))) ) ;; On parcourt le jeu de sélection pour constituer une liste (xref-lst) ;; avec seulement les noms des Xrefs (if ss (progn (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))) ) (if (and (not (member (vla-get-name obj) xref-lst)) ;_ éviter les doublons (= :vlax-true ;_ uniquement les Xrefs (vla-get-isXref (vla-item (vla-get-Blocks AcDoc) (vla-get-Name obj)) ) ) ) (setq xref-lst (cons (vla-get-name obj) xref-lst ) ) ) ) ;;; (setq xref-lst1 xref-lst ;_ on conserve dans xref-lst1 les xref "parents" ;;; n_lst 0 ;;; ) (setq xref-lst1 nil) (setq n_lst 0) ;; On parcourt la liste xref-lst et pour chaque Xref, on cherche si ;; dans ces composants il y a une (ou des) Xref. Si ces le cas, ;; elles sont rajoutées en fin de liste et seront traitées à leur tour. (while (setq name (nth n_lst xref-lst)) (setq bloc (vla-item (vla-get-blocks acDoc) name)) (repeat (setq n (vla-get-count bloc)) ;_ nombre de composant du bloc (Xref) (setq ent (vla-item bloc (setq n (1- n)))) (if (and (= (vla-get-ObjectName ent) "AcDbBlockReference") ;_ si le composant est un bloc ;;; (not (member (vla-get-name ent) xref-lst)) ;_ s'il n'est pas déjà dans la liste (= :vlax-true ;_ si c'est une Xref (vla-get-isXref (vla-item (vla-get-Blocks AcDoc) (vla-get-Name ent) ) ) ) ) ;_#and (progn (if (not (member (vla-get-name ent) xref-lst)) ;_ s'il n'est pas déjà dans la liste (setq xref-lst (reverse (cons (vla-get-Name ent) (reverse xref-lst) ) ) ;_ la Xref est ajoutée en fin de liste ) ) ;;dans tous les cas, cette référence conient d'autre référence: (if (setq tmp (assoc name xref-lst1)) ;_ s'il est déjà dans la liste des références parentes (setq xref-lst1 (subst (append tmp (list (vla-get-Name ent))) tmp (cons name xref-lst1)) ) (setq xref-lst1 (reverse (cons (list name (vla-get-Name ent)) (reverse xref-lst1))) ;_ la Xref est ajoutée en fin de liste ) ) ) ) ;_#if ) (setq n_lst (1+ n_lst)) ) ) ) ;; Constitution de xref-lst2 : xref-lst moins les éléments parents contenus dans xref-lst1 (setq xref-lst2 (vl-remove-if '(lambda (x) (member x (mapcar 'car xref-lst1))) xref-lst) ) (prompt "\nXref du dessin:") (mapcar 'print xref-lst) (prompt "\nXref parentes du dessin est leurs sous xref:") (foreach l xref-lst1 (prompt (strcat "\nParent : " (car l))) (prompt "\n Fils : " ) (foreach ll (cdr l) (prompt (strcat "\n " ll)) ) ) (princ) ) ;;******************************************************************************** ;§/xref/Détache les xref imbriquées/none ;;idée originale : Gile ;;Si tu veux, par exemple, détacher toutes le Xrefs imbriquées, il faut commencer par les "plus profondément imbriquées". (defun c:detach_imbriquees () (if (not xref-lst2) (3listes_xref) ) (mapcar '(lambda (x) (vla-detach (vla-item (vla-get-Blocks AcDoc) x)) ) (reverse xref-lst2) ) ) ;******************************************************************************** ;§/xref/pour détacher toutes les Xrefs dont le chemin n'est pas valide/none ;;idée originale : Gile (defun c:detach_nonvalides () (if (not xref-lst) (3listes_xref) ) (mapcar '(lambda (x) (setq path (vla-get-Path (vla-item (vla-get-blocks acdoc) x))) (if (not (open path "r")) (vla-detach (vla-item (vla-get-Blocks AcDoc) x)) ) ) xref-lst ) )
  16. Le fichier txt doit être ajouté comme ressource en principe ça marche: ton txt est simplement "emballé" dans ton vlx: il reste en clair, il n'est pas crypté
  17. J'ai parlé trop vite : le problème ne venait pas de là, et était suffisament aléatoire pour que je tombe dans le panneau Non dictadd n'est pas limité à 10 xrecord. par contre, il imite la création de code non protégés par Autodesk. mais l'aventage, c'est qu'il corrige de lui même la liste de données, ce que ne fait pas vla-SetXRecordData, qui de ce fait, est plus sourcilleux quand on ne sait pas exactement quels codes son nécessaires : Dictadd n'est pas à proscrire
  18. GEGEMATIC

    Importer EPS ?

    ça a disparu dés la 2002, en tout cas pour l'export pour l'export, il doit rester des solution du style dxf2ps.exe, sous dos ou coreldraw, ilustrator Pour l'import, Gsview qui permet d'ouvrir du pdf / eps et de l'exporter ves du dxf http://pages.cs.wisc.edu/~ghost/gsview/get49.htm
  19. GEGEMATIC

    Grouper dégrouper

    Merci du conseil, mais il y a longtemps que j'ai renoncé à développer cette activité ... Je développe pour faire ce qu'on ne peut pas faire avec Autocad en l'état, sur des fichiers volumineux, où la question de le faire manuellement ne se pose même pas, et j'en vis depuis 1996 ... A bientôt sur d'autres fils, je n'en doute pas ... Gégé
  20. J'utilise les fichier ini pour le paramétrage de mes programmes depuis longtemps. Pour gérer tous les cas de figure, c'est un truc de dingues. N'empèche que PowerClic.vlx contient un certains nombre de fonctions, qui peuvent aider à la gestion des fichier ini : PW_CHARGER_INI Chargement à partir d'un fichier txt des listes de parametres ds des variables globales [ nomfich ] PW_CHARGER_LST_INI Initialisation à partir d'un fichier ini de variables système [ fichierini ] PW_ECRINI Ecrire une variable dans un fichier ini spécifié par l'utilisateur [ lcmb nomfich ] PW_ECRIT_SECTION_INI remplace une section dans un fichier ini [ fich l-sect ] PW_LIST_LIT_INI scrute un fichier ini, liste les lignes d'une section [ fich deb ] Je te renvoie à la bibliothèque des fonctions pour fichier ini : http://www.g-eaux.com/powerclic/librairie/fam-INI.htm Il y a plusieurs fonctions qui semblent faire la même chose, mais c'est un problème historique de fichier ini qui avaient des normes différentes: La règle générale: [masection] ;;masection est une section qui peut contenir des listes ou des affectation de variable: ;;affectation de variable préhistorique: &NA-CMATE=FO_DUCTI ;;affectation de variable moderne: NA-CMATE=FO_DUCTI [maliste] ;;le nom de section va devenir le nom de la variable maliste 1erel,2emel,3emel a,b,c 1,2,3 va donner à la lecture: !maliste '(("1erel" "2emel" "3emel") ("a" "b" "c") (1 2 3) ) et !NA-CMATE "FO_DUCTI" J'ai depuis la dernière mise en ligne fait évoluer ces fonctions, pour gérer les listes directement en '((a b c)(1 2 3)) mais c'est encore d'autres cas spécifiques Je travaille plus sur les fichier csv, qu'il est bien plus agréable de modifier avec oOo, mais qui sont moins souples Salut
  21. GEGEMATIC

    Grouper dégrouper

    J'en déduis que vous êtes d'accord avec moi: Donner une méthode, voir un bout de code que la personne devra exploiter elle même, ne nuit a personne. Aller jusqu'à la réponse à un problème donné et spécifique, et c'est souvent ce qui se passe à force, c'est trop. Il est tout a fait faux qu'un petit développement spécifique à forcément un cout exorbitant. Un BE qui consulterait Serge Camiré, Patrick Emin, Délicad ou G-eaux sera certainement surpris d'un cout global qui n'a rien a voir avec l'intervention d'un technicien lambda de Cap Gémini pour redémarrer un serveur ... Le cout vient souvent de la taille de la structure, plutôt que de la technicité. Lorsque j'ai démarré vraiment le développement Autocad, je suis arrivé dans une boutique qui achetait régulièrement de petits développement (1 à 2 h de prestation) à la boite qui leur vendait Autocad. Ces petits bouts de code amenaient une grande amélioration et ne coutaient pas si cher. Puis ils ont embauché 2 développeurs à temps complet, puis moi avec mission, moité développement / moitié études. Je suis partit (Il y a longtemps), les 2 poste de développeurs ont été supprimés, depuis un bricoleur rafistole avec des bouts de code glanés ça et là, et apparament un plan social va toucher l'ensemble. Je suis un jour tombé sur le CV du gars qui bossait pour le revendeur Autocad, lui aussi avait perdu ce poste : Plus personne ne faisait appel à ses petites, mais valables, interventions ... (parmis elles, une petite routine de quelque lignes pour faire de l'incrémentation de texte : Je dois l'avoir encore sur mon disque ...) Je lui doit beaucoup, c'est les codes sources* qu'il avait laissé qui m'ont permis de me mettre vraiment le pied à l'étrier, en 1992 ... Je ne veux pas vous faire du Ken Loach, mais tout ceci est la vérité. Et beaucoup de revendeurs Autocad qui avaient misé sur cette activité de conseil + développement ont semble t-il revu leurs ambitions à la baisse, pour devenir de simples commerçant / installateur. Partageons, aidons nous, mais faisons attention a ne pas devenir malgré nous, des destructeurs d'emploi, de carrières, et des créateurs d'heures travaillées non payées ... Si Je n'étais pas d'accord pour le partage et l'entraide, je ne viendrais pas sur ce forum, et je n'aurai pas posté + de 1200 messages sur planetar ... *A l'époque, même protect.exe n'existait pas : apparu avec la version 12.
  22. GEGEMATIC

    Grouper dégrouper

    Pour Gile: Je crois que tu as parfaitement compris, et tous les grands contributeurs de ce forum avec toi, ce que je veux dire. L'exemple avec Funkybebel montre bien la limite que vous avez vous même éprouvé. Il s'est comporté comme un malotru et vous l'avez laissé en plan, bien vu. Maintenant, s'il avait été plus malin, il aurait pu obtenir beaucoup de vous, et je le dis franchement : TROP. Je le dis et je le répète, je n'ai rien contre une communauté d'utilisateurs, et l'échange d'expérience, et moi aussi je me suis laissé allé, par le passé, à trop donner. J'ai beaucoup oeuvré sur feu le forum d'ivan Messeguer, jusqu'il y a qq mois. Je suis resté fidèle à ce forum pour Ivan, et parceque je préfère les forums en NNTP qu'en HTTP. A la fin de planetar, j'ai préféré venir chez Patrick Emin, qui a fait un gros boulot, plutôt que d'aller offrir mon savoir au forum D'Autodesk, qui utilise gratuitement et sans aucune participation constructive, le savoir de ses utilisateurs, pour palier les carences de leurs produits bogués Maintenant que CadXp va être vendu, je ne sais pas ou j'irai partager. Pour tous les autres, je n'ai rien contre la passion, mais voilà la règle que je m'impose: Pas de solution clef en main, pour répondre à une problématique d'entreprise précise. C'est tout ! Que chaque contributeur respecte cette déontologie ne nuira aucunement à l'avancée des connaissances, les lisp de "recherche fondamentale" de Patrick35, Gile, ou BRED et j'en passe ne nuisent à personne au contraire. Je n'hésite pas moi même à "publier" (c'est le mots qui convient quand on prend le temps d'étudier un problème, à le metre en forme, le rédiger) sur des sujets tels que les réacteurs, les dictionnaires etc... (le problème et que tout celà a disparu avec la fin de planetar) Maintenant, lorsque j'ai publié un exemple concret sur les rectangles avec réacteurs, j'ai volontairement limité mon exemple à qq chose d'inutilisable en production : Pour apprendre c'est suffisant, pour en profiter tel quel, sans effort, il faut payer: ça me parait logique. Il ne faut pas confondre avec la necessité de logiciels libres tels qu'open Office ou Linux: Ces logiciels ne font pas de concurence déloyale, puisqu'au contraire, il ont sauvé l'existence d'une offre concurencielle face à une entreprise en situation de monopole. C'est très différent. L'exemple donné par Gile dans la discussion avec FunkyBebel est tres révélateur que ce systeme nuit à tout le monde: En effet, les fonctions d'incrémentations numérique/alphanumérique sont très très complexes à metre en oeuvre pour gérer un maximum de cas, tout en conservant un minimum d'intuitivité et de simplicité pour que le réflex de les utiliser soit compatible avec de petites séries. Vers 2000, je me suis serieusement penché sur la question et j'ai créé les PowerTexTools. Je les vendais sous forme de partagiciel à un prix dérisoire( je ne m'en rappelle plus: 10F, 50F ?) Chaque fois que ce pb était soulevé, je proposait cette solution économique et assez universelle. Mais à chaque fois qq sortait une solution sur mesure. Il en existe des centaines: Mais à chaque fois, elles ont besoin d'une petite adaptation pour résoudre un nouveau cas particulier. Résultat, personne n'y a gagné: Ma solution n'a pas pu atteindre le nombre d'utilisateurs suffisants pour pouvoir être développée assidument et déboguée (je veux dire retours d'expérience) par un grand nombre, et les centaines de solutions sur mesure qui circulent ne résolvent à chaque fois qu'une petite partie du problème, qui est quand on s'y penche, très vaste. Le fait qu'il n'existe pas de véritable marché du partagiciel, autour d'Autocad, détruit de petites entreprises, mais surtout nuit aux PME qui auraient besoin d'un véritable service, qu'elle ne s'offrent pas, et bricolent avec des solution non pérennes trouvées ça et là. Je le rappelle, en matière de CAO DAO, le développement adapté peut engendré des gains de productivité énormes, et bien sur, son absence peut être désastreuse. Il y a longtemps que j'ai abandonné une politique partagiciel, et j'ai maintenu PowerClic plus par respect pour ses (trop rares) clients et pour notre besoin propre. Je ne prêche donc plus pour ma paroisse, mais je souhaite à des entreprises comme Délicad de réussir là ou j'ai échoué, pour ça, faisons attention à ce que notre générosité ne détruise pas ce si fragile marché.
  23. GEGEMATIC

    Grouper dégrouper

    A moi ! Et plusieurs fois... Mais parceque j'ai eu le niveau de compétence pour l'exploiter. Un bout de code qui libère l'énergie créatrice des autres ne nui à personne, et génère même une économie du développement. Une solution clef en main, avec interface graphique, donnée sur un forum tue à terme les gens qui ont permis d'en arriver là: Les employeurs n'ont qu'à se frotter les mains: La productivité augmente sans avoir à investir dans du développement, du conseil, et sans avoir à valoriser le salaires de ceux qui ont l'audace de réclamer cette aide extérieure. Tout ceux qui font ce travail y perdent sauf celui qui n'y participe pas, le patron ou le responsable de BE qui n'a du coup pas besoin d'investir dans ce secteur. J'ai vu beaucoup de développeurs jeter l'éponge, disparaitre du paysage. Déjà que l'évolution permanente des logiciels, des langages détruit au fur et à mesure la valeur de nos connaissances, si elles ne trouvent pas de créneau économique, au bout d'un moment, ce n'est plus viable. Je vis essentiellement de la prestation, le développement pur reste marginal, et mes développement "maisons" sont amortis par la prestation. Ce systeme économique ne me satisfait pas tout à fait: Il y aurait un marché pour le développement sur mesure, à des prix non prohibitifs, s'il n'était pas ravagé par les solutions gratuites, pas toujours ultra performantes, mais qui dissuadent d'investir: On attend que qq chose de gratuit soit disponible. Restons passionnés, mais ne bradons pas notre savoir. Et j'espère que la bouteille t'a plu ! Gégé
  24. GEGEMATIC

    Grouper dégrouper

    Cette remarque m'amène à ouvrir les débat: Il se trouve que je connais Philippe, de Délicad. C'est un gars qui a monté sa petite boutique, et qui essaye d'en vivre. Tout simplement. Je n'ai moi même jamais été avare de code sur internet, mais j'ai toujours diffusé PowerClic sous forme de VLX. Je n'agirai pas de la sorte aujourd'hui: J'aurais fait de PowerClic un projet Open source que j'aurais animé, et ça m'aurait rapporté plus de retours que la vente de licence Mais ça c'est un modèle pertinant aujourd'hui: en 1991, quand j'ai commencé le développement, on payais très cher notre savoir, l'échange était très restreint. Délicad fait de petit logiciels qui s'installent, fonctionnent et rendent service à des gens qui ne sont même pas capable de (et ne veulent pas être capable) de taper une commande. Maintenant, après avoir passé pas mal d'années à aider des gens sur les forums, j'ai pris une règle de déontologie: Je ne résout jamais l'ensemble du problème à la place de celui qui pose la question, et je ne développe jamais de solution clef en main gratuitement: si je fournit une solution, elle doit être générale, et jamais spécifique à un besoin. Notre savoir ne sert pas à des Philanthropes, il peut générer d'énormes surcroit de productivité, et par' la même, poser des problèmes d'emploi ... Alors communauté d'utilisateurs, d'érudits d'Autocad : OK Mais bien une Communauté ! Vente à perte de logiciels et de conseils Autocad sur mesure : attention danger.
  25. Bataillant enfin avec les filtres de propriété de calque en cascade, j'étais content de mon gestionnaire quand je me suis aperçu que certains sous filtre n'étaient pas créés. J'ai cherché le pourquoi du comment. avant de m'apercevoir qu'il n'était plus créés à partir de la 10eme occurence. Par la passé, je m'étais aperçu que dictadd ne savait pas écrire au delà du code de groupe 369 Maintenant je m'aperçoit qu'il est également limité à la création de 10 xrecord
×
×
  • 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é