Aller au contenu

John-cad

Membres
  • Compteur de contenus

    24
  • Inscription

  • Dernière visite

John-cad's Achievements

Newbie

Newbie (1/14)

0

Réputation sur la communauté

  1. Bonjour à tous le lisp en réponse du 12 juillet 2016 ne marche plus avec acd2013 et libre office 5.1.6.2 sous windows 10 alors que sous windows7 avec les mêmes logiciels ca fonctionne très bien savez vous pourquoi ce bug ? faut-il installer un appli vba pour libre office sous windows 10 ? Merci par avance pour vos réponses John
  2. Bonjour à tous désolé de ne pas avoir répondu plus tôt mais j'étais en plein déplacement professionnel l'idée de départ était en fait de connecter calc de libreoffice avec autocad version pleine n'étant pas un feru de programmation en basic ou vba, j'ai abandonné ce petit code basic et je l'ai réaliser en lisp tout court par contre, pour des besoins professionnels, j'ai dû acquérir un autocad lt acad lt ne supporte normalement ni le vba ni le lisp mais pensez vous qu'on puisse tout de même piloter acadlt à partir de calc de libre office en language basic ? et donc réaliser ce petit programme en basic de zoom au point à partir de calc j'ai essayé le code décrit par lommig mais il n'y a pas de connexion possible à priori Merci par avance de vos retours John
  3. Bonjour Lommig Merci tout d'abord pour ce début de code et désolé pour ma réponse tardive j'étais débordé par le travail en effet, en utlisant ta 1ere méthode, j'arrive depuis calc de libre office à créer quand Autocad est ouvert un nouveau calque mais dès que je veux lui faire insérer un texte ca plante et bien sûr je n'ai pas moyen de voir si c'est la variable qui fait défaut ou si c'est la commande en elle-même ci-joint le bout de code que j'ai essayé Sub zoom1() Dim oleService oleService = createUnoService("com.sun.star.bridge.OleObjectFactory") Dim VBS VBS = oleService.createInstance("MSScriptControl.ScriptControl") VBS.Language = "VBScript" Dim scr as String Dim fichier as Object Dim feuil as Object Dim cell as Object Dim row as Integer Dim num as String Dim ptx as Single Dim pty as Single Dim ptz as Single fichier = ThisComponent feuil = ThisComponent.Sheets.getByName(ThisComponent.CurrentController.ActiveSheet.Name) cell = ThisComponent.CurrentSelection row = cell.CellAddress.Row cell = feuil.getCellByPosition(0,row) num = cell.Value cell = feuil.getCellByPosition(1,row) ptx = cell.Value cell = feuil.getCellByPosition(2,row) pty =cell.Value cell = feuil.getCellByPosition(3,row) ptz = cell.Value 'MsgBox num & " " & ptx & " " & pty & " " & ptz scr=scr+" Public AcadApp "+Chr(10) scr=scr+" Set AcadApp = GetObject(,""AutoCAD.Application"") "+Chr(10) scr=scr+" Set AcadPlan = AcadApp.ActiveDocument "+Chr(10) ' Création du calque d'insertion du texte zoom scr=scr+" Set Newlayer = AcadApp.ActiveDocument.Layers.Add(""$ZOOM_PT"") "+Chr(10) scr=scr+" AcadApp.ActiveDocument.SetVariable ""CECOLOR"", ""1"" "+Chr(10) scr=scr+" AcadApp.ActiveDocument.ActiveLayer = Newlayer "+Chr(10) scr=scr+" Set Ptxt = AcadApp.ActiveDocument.ModelSpace.AddText(num, point_txt, 1.25) "+Chr(10) scr=scr+" Ptxt.Alignment = acAlignmentBottomCenter "+Chr(10) scr=scr+" Ptxt.TextAlignmentPoint = point_txt "+Chr(10) scr=scr+" AcadPlan.Regen acActiveViewport "+Chr(10) VBS.ExecuteStatement(scr) End Sub je ne vois pas comment on peut définir le point_txt à partir des coordonnées lu dans calc depuis le curseur, peut être sous forme de liste comme en lisp.... je sais pas pour résumer, dans mon fichier calc, j'ai des colonnes avec dans A le numéro du point, B l'abscisse, C l'ordonnée, D l'alimétrie je voudrais pouvoir insérer dans Autocad directement depuis calc un texte (mon numéro de point en fait) aux coordonnées XYZ de mon listing de points je vais continuer à chercher de mon côté voir si je trouve quelque chose même si mes connaissances en VB sont plus que limitées merci par avance de votre aide John
  4. Peut-être que ma question est débile mais j'essaye quand même Si autocad accepte le vba d'Excel Il ne doit peut-être pas accepter le basic de calc libre office Cette question car dans le module macro vba de Microsoft on sélectionne les références de programme externe et librairies Sous calc module macro en basic je n'ai pas encore trouver de sélectionner ces mêmes références Quelqu'un les à t-il déjà vu en basic sous calc libre office ? Car selon la réponse je ne continue même plus ce programme Merci de vos retours
  5. Bonjour J'ai retrouvé la macro excel qui me permettait de faire un zoom en insérant un texte sous Autocad selon des coordonnées XYZ qui se trouvent dans une feuille de calcul excel je voudrai passer cette macro sous calc de libre office pour le moment j'arrive seulement à afficher un message box avec les informations d'un point Nuémro et XYZ si vous avez des solutions pour passer d'une macro vba excel à une macro basic calc libre office, voici le code en question qui marchait très bien sous vba excel Sub Zoom 'Dim AcadApp As AcadApplication 'Dim Newlayer As AcadLayer 'Dim textStyle1 As AcadTextStyle 'Dim txt As String 'Dim NomModel As String 'Dim Ptxt As AcadText Dim fichier as Object Dim feuil as Object Dim cell as Object Dim row as Integer Dim num as String Dim ptx as Single Dim pty as Single Dim ptz as Single 'Set AcadApp = GetObject(, "AutoCAD.Application") ' On Error GoTo 0 ' If AcadApp Is Nothing Then ' Set AcadApp = New AutoCAD.AcadApplication ' End If fichier = ThisComponent feuil = ThisComponent.Sheets.getByName(ThisComponent.CurrentController.ActiveSheet.Name) cell = ThisComponent.CurrentSelection row = cell.CellAddress.Row 'If cell.CellAddress.Column <> 1 Then MsgBox "Cette colonne n'est pas valide" Exit Sub cell = feuil.getCellByPosition(0,row) num = cell.Value cell = feuil.getCellByPosition(1,row) ptx = cell.Value cell = feuil.getCellByPosition(2,row) pty =cell.Value cell = feuil.getCellByPosition(3,row) ptz = cell.Value MsgBox num & " - " & "X= " & ptx & " - Y= " & pty & " - Z= " & ptz ' Contrôle si Fichier Autocad dans Espace Object 'If NomModel <> "Model" Then MsgBox "Aucun point ne sera inséré dans l'espace papier.": Exit Sub 'If NomModel = "Model" Then 'Création du calque "ZOOM_PT" si absent 'Set Newlayer = AcadApp.ActiveDocument.Layers.Add("ZOOM_PT") 'AcadApp.ActiveDocument.SetVariable "CECOLOR", "1" 'AcadApp.ActiveDocument.ActiveLayer = Newlayer 'Création du style de texte "ZOOM_PT" si absent 'Set textStyle1 = AcadApp.ActiveDocument.TextStyles.Add("ZOOM_PT") 'textStyle1.fontFile = "C:\WINDOWS\Fonts\ARIAL.TTF" 'AcadApp.ActiveDocument.ActiveTextStyle = textStyle1 'Set Ptxt = AcadApp.ActiveDocument.ModelSpace.AddText(txt, point_txt, 1.25) 'Ptxt.Alignment = acAlignmentBottomCenter 'Ptxt.TextAlignmentPoint = point_txt 'ActiveCell.Interior.ColorIndex = "3" 'End If 'End If 'i = i + 1 'Acitve la cellule suivante 'Cells(i, j).Activate 'AcadApp.Visible = True 'Centre le zoom sur le texte 'AcadApp.ZoomCenter point_txt, 15 'Libère la mémoire de la varaible AcadApp 'Set AcadApp = Nothing End Sub j'ai mis pas mal de ' devant chaque ligne car sinon le programme n'arrête pas de planter sous calc je mets en pièce jointe un exemple de fichier calc en question extension .ods Merci par avance de votre aide John
  6. Merci Patrick John
  7. Bonjour Patrick et vraiment un grand merci pour ton aide sur ce post je n'y serai pas arrivé pas sinon, j'ai vu le jour je préconise l'utilisation de modèle writer avec extension ott car si l'utilisateur enregistre par mégarde le document odt au lieu de faire enregistrer sous, le modèle est foutu j'ai réajusté avec (defun init-oo-writer-carrez (/ oo-des openPar) (setq oo-app (vlax-create-object "com.sun.star.ServiceManager")) (setq oo-des (vlax-invoke oo-app 'createinstance "com.sun.star.frame.Desktop")) (setq oo-doc (vlax-invoke-method oo-des 'loadComponentFromURL (decodeurl (strcat "file:///" (vl-string-translate "\\" "/" "C:\\TMP\\modele.ott"))) "_blank" 0 (vlax-make-safearray vlax-vbVariant '(0 . 0)))) ) tout marche nickel les deux commandes marchent très bien pour l'entête et le pied de page pour une ligne uniquement mais quand on a différentes lignes à insérer, c'est vite le souk dans le fichier odt Merci encore on peut clôturer ce post Thanks higher Patrick and see you soon John
  8. Salut Patrick j'ai essayé de remplacer dans la fonction le terme _blank par le chemin de mon modèle.ott mais rien n'y fait (defun init-oo-writer (/ oo-des openPar) (setq oo-app (vlax-create-object "com.sun.star.ServiceManager")) (setq oo-des (vlax-invoke oo-app 'createinstance "com.sun.star.frame.Desktop")) (setq oo-doc (vlax-invoke-method oo-des 'loadComponentFromURL "private:factory/swriter" "C:\\Users\\Utilisateur\\Desktop\\modele.ott" 0 (vlax-make-safearray vlax-vbVariant '(0 . 2)))) ) si vous avez des idées Merci John
  9. Salut Merci Patrick pour ces réponses j'ai mis du temps à répondre car j'étais débordé ces derniers jours j'ai terminé mon lisp de création de rapport automatique, tout marche nickel et la mise en page se fait toute seule il me manque juste de pouvoir insérer une en-tête et un pied de page ou sinon d'ouvrir à l'ouverture de swriter un document type extension .ott John
  10. Merci Patrick pour ton aide précieuse je vais pouvoir finaliser mon lisp avec la mise en page automatique John
  11. Merci Patrick pour ces quelques lignes, qui changent la vie et évite de tout se taper à la main comme avant n'aurais tu pas par hasard aussi la commande pour l'alignement gauche droite ou centré ? et le tableau, je vais essayer de mon côté aussi merci encore john
  12. petite avancée microbienne, en recherchant un peu sur le net pour le style du cursor, il doit falloir utiliser quelque chose du style ;; pour la taille du texte (vlax-invoke-method oo-txt 'setPropertyValue oo-obj CharHeight "14") ;; pour le style de texte (vlax-invoke-method oo-txt 'setPropertyValue oo-obj CharFontName "Arial") ;; pour l'alignement du texte (vlax-invoke-method oo-txt 'setPropertyValue oo-obj Alignment "Right") ;; pour la couleur du texte (vlax-invoke-method oo-txt 'setPropertyValue oo-obj CharColor "1") si vous avez des idées, merci John
  13. il fautdrait aussi si possible trouver le moyen d'ouvrir un fichier modèle au démarrage du lisp, je sais écrire quelques lignes lisp mais là ca dépasse vraiment mes compétences merci John
  14. Bonjour Patrick les trois lignes de ta réponse précédentes m'ont vraiment aidé à avancer sur mon lisp le paramètre Chr10 sert pour les sauts de lignes j'ai insérer des sauts de paragraphes avec (vlax-invoke-method oo-txt 'insertControlCharacter oo-obj 0 :vlax-false) qui permet de conserver les propriétés d'un paragraphe sans modifier tout le document j'arrive à écrire ce que je veux dans mon fichier writer de libre office mais la mise en forme est à revoir je n'ai pas par exemple trouver le moyen de modifier le style de texte, la taille du texte, la couleur du texte et de pouvoir insérer un tableau par exemple de 4 lignes et de 4 colonnes pour la couleur, j'ai essayé cela sans succés (vlax-invoke-method oo-txt 'setPropertyValue oo-obj "CharColor" "255") pour le tableau, sans succès non plus (setq oo-tabl (vlax-invoke oo-doc 'createInstance( "com.sun.star.text.TextTable"))) (vlax-invoke-method oo-tabl 'initialize 4, 4) (vlax-invoke-method oo-txt 'insertTextContent oo-obj, oo-tabl :vlax-false) j'ai essayé de prendre exemples sur ton code lisp mais rien n'y fait, avec ou sans virgule.... Merci encore de ton aide John
  15. Bonjour Patrick les trois lignes de ta réponse précédentes m'ont vraiment aidé à avancer sur mon lisp le paramètre Chr10 sert pour les sauts de lignes j'ai insérer des sauts de paragraphes avec (vlax-invoke-method oo-txt 'insertControlCharacter oo-obj 0 :vlax-false) qui permet de conserver les propriétés d'un paragraphe sans modifier tout le document j'arrive à écrire ce que je veux dans mon fichier writer de libre office mais la mise en forme est à revoir je n'ai pas par exemple trouver le moyen de modifier le style de texte, la taille du texte, la couleur du texte et de pouvoir insérer un tableau par exemple de 4 lignes et de 4 colonnes pour la couleur, j'ai essayé cela sans succés (vlax-invoke-method oo-txt 'setPropertyValue oo-obj "CharColor" "255") pour le tableau, sans succès non plus (setq oo-tabl (vlax-invoke oo-doc 'createInstance( "com.sun.star.text.TextTable"))) (vlax-invoke-method oo-tabl 'initialize 4, 4) (vlax-invoke-method oo-txt 'insertTextContent oo-obj, oo-tabl :vlax-false) j'ai essayé de prendre exemples sur ton code lisp mais rien n'y fait, avec ou sans virgule.... Merci encore de ton aide John
×
×
  • 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é