-
Compteur de contenus
1 013 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par sechanbask
-
Pour moi la routine, n'est pas obligatoire pour les points suivants puisque à l'aide des champs, le cartouche une fois inséré sera à jour : DATE TITRE DU PLAN Par contre, pour l'échelle il faut trouver les unités de plan et faire une opération avec l'échelle de la fenêtre de l'espace papier. Pour le N° DE DOSSIER et NUM PLAN, je vois pas ce que sais alors pour obtenir...
-
il existe ce code suivant pour rechercher les attributs d'un plan déjà ouvert mais pour atteindre ton but, il faut pas mal l'adapter, mais comme je dis souvent, y'a rarement des choses impossibles... http://www.cadxp.com/sujetXForum-16438.htm bien sûr la partie de recherche des propriété dynamique des blocs est à supprimer, et il faut vérifier que les blocs sur l'espace papier soient pris en compte et faut lui permettre d'ouvrir plusieurs fichiers. je pense que c'est faisable même par une personne débutante mais avec pas mal de temps devant elle. Je vais commencer par modifier un peu mon code. Tes cartouches sont dans l'espace papier ou l'espace objet ? car ça va changer le code, ou je vais peut-être l'adapter pour les deux ... je ne sais pas encore. [Edité le 4/11/2007 par sechanbask]
-
INSERTION DE BLOC AVEC OU SAN ATTRIBUT
sechanbask a répondu à un(e) sujet de formula1 dans VBA et VB
ça dépend de la construction de ton code. est-ce que tu a une userform = fenêtre qui s'ouvre devant autocad lorsque tu lance ton programme ? -sinon oublie ce que j'ai dis et reposte l'ensemble de ton code pour que j'essaie de comprendre d'où vient le problème -si oui, comment tu lance ta userform, via un module ? as tu des boutons sur ta userform pour lancer une autre partie de ton code? -si tu as un bouton pour lancer commande pour l'insertion de ton il faut que tu mettes dans le code du bouton (normalement dans le code de la userform) le code me.hide avant que tu lances la commande pour demander à l'utilisateur d'indiquer le point. -si tu lances ton code et qu'il continue du un module, il faut que tu mettes le code userformX.hide dans le code du module avant que tu lances la commande pour demander à l'utilisateur d'indiquer le point Mais tu sais parler de code sans voir le code c'est comme danser à propos d'architecture [citation du film "Playing by heart"] "Parler d'amour c'est comme de danser à propos d'architecture[..]" -
Section circulaire jolie avec calorifuge
sechanbask a répondu à un(e) sujet de sechanbask dans Routines VBA
Comme promis, j'ai commencé à poster mes projets dans la zone de téléchargement.... [Edité le 10/11/2007 par sechanbask] -
INSERTION DE BLOC AVEC OU SAN ATTRIBUT
sechanbask a répondu à un(e) sujet de formula1 dans VBA et VB
formula1> il faut que tu mette userformX.hide juste avant la commande pour demander à l'utilisateur d'indiquer le point... comme ça le programme "cache" la fenêtre et l'utilisateur peut sélectionner le point d'insertion du bloc. Bon courage -
INSERTION DE BLOC AVEC OU SAN ATTRIBUT
sechanbask a répondu à un(e) sujet de formula1 dans VBA et VB
Nul besoin de me prendre pour un lapin de 3 semaines pour tenter de m'expliquer des choses dans l'espace du forum qui ne concerne pas vraiment mon problème. J'avais juste expliquer mon problème ici pour demander à formula1 de chercher l'erreur. Mais l'espace approprié est le suivant: http://www.cadxp.com/sujetXForum-17369.htm Si tu veux m'aider, me donner un conseil, je pense qu'il y a bien d'autre manière de me expliquer cordialement une autre méthode sans parler de qui intervient ici comme un cheveux sur la soupe. Je me trompe ? Les blocs que je veux insérer vont devenir dynamiques alors si tu as une autre solution... je suis preneur. Avec VBA, je ne vois pas comment je peux déclarer les unités de mon bloc lorsque je l'insère c'est pour ça que j'ai créer un bloc dans un fichier que j'insère le bloc-fichier et que le décompose puis je supprime le bloc fichier ... Regarde mon code pour l'impact circulaire tu comprendras mieux... Je viens de réouvrir mon fichier bloc "Sect_rect_bloc.dwg" et pour moi il contient 1 bloc et uniquement 1 bloc. Ce bloc appelé "Section_rectangulaire" contient 2 ploylignes. Le reste ce sont des éléments purgeables... je ne vois pas où est le problème ? J'ai même téléchargé l'élément que j'avais envoyé pour être sur de ne pas avoir fait la même erreur que pour le sujet http://www.cadxp.com/sujetXForum-17368.htm Bonne journée à tous P.S. winfield et Messieurs les modérateurs, nul besoin de reparler de ce message, il n'est aucunement enclin à une violence verbale. Pour moi l'incident est clos, et je suis toujours aussi calme en peignoir devant mon PC.[Edité le 3/11/2007 par sechanbask] [Edité le 3/11/2007 par sechanbask] -
INSERTION DE BLOC AVEC OU SAN ATTRIBUT
sechanbask a répondu à un(e) sujet de formula1 dans VBA et VB
essaie de lancer la commande depuis autocad en faisant ALT+F8 et en sélectionnant ta macro. Si tu lances ta macro depuis une userform, oublie pas de mettre userformX.hide où userformX est le nom de ta feuille.... -
je ne vois rien de ton code..
-
INSERTION DE BLOC AVEC OU SAN ATTRIBUT
sechanbask a répondu à un(e) sujet de formula1 dans VBA et VB
nous on est pas prets à changer vu les problèmes sur les nouvelles versions. Déjà ici j'entends que du mal de 2007 et 2008 mep -
INSERTION DE BLOC AVEC OU SAN ATTRIBUT
sechanbask a répondu à un(e) sujet de formula1 dans VBA et VB
en fait sur mon fichier source, j'ai crée un bloc pour qu'il ait le bon nom, une bonne unité échelle. Lorsque je l'insère, VBA, créer un bloc avec le fichier, et comme je ne suis pas fan des blocs imbriqués (puisque qu'après pour fouiller dedans pour changer des entité de calque avec VBA faut faire 2 boucles imbriquées c'est chiant quoi) alors je veux faire comme dans mon code pour l'impact circulaire, je veux le décomposer et supprimer le bloc créé par VBA... mais là je ne sais pas pourquoi, je me retrouve avec une erreur et je ne comprends pas pourquoi elle survient... alors, je ne sais pas comment la gérer... En plus pour l'instant, je n'ai pas de bloc dynamique ou avec attribut mais quand ça arrivera, il faudra bien que je n'ai qu'un seul bloc, le bloc que j'ai crée pas celui de VBA car je ne pourrais pas facilement gérer les propriétés dynamiques car elle ne sont gérable que dans l'éditeur de bloc, alors le mieux c'est que le bloc natif les possède.... Les fabriquer avec VBA !! aie aie!!! -
essaie de mettre le code avec les balise de [ code ] ici ton code [ / code ] sans les espaces bien sur...
-
je n'ai que la 2006 ...
-
les portes et fenêtres ne sont pas dans un calque menuiserie ?? [Edité le 2/11/2007 par sechanbask] [Edité le 2/11/2007 par sechanbask]
-
INSERTION DE BLOC AVEC OU SAN ATTRIBUT
sechanbask a répondu à un(e) sujet de formula1 dans VBA et VB
Pour demander à l'utilisateur de donner le point il faut la methode utiliy.getpoint, ça devrait donc donner : dim pins as variant Pins = ThisDrawing.Utility.GetPoint(, "Veuillez choisir un point : ") P.S. tu as vu mon sujet http://www.cadxp.com/sujetXForum-17369.htm? Car j'ai un problème dessus et je ne comprends pas où et même si tu es débutant (et je me considère comme débutant ça fait pas 1 an que je programme), tu verras peut-être. J'arrive pas à décomposer mon bloc et je ne vois pas d'où ça vient puisque j'ai utilisé la même méthode pour le code http://www.cadxp.com/sujetXForum-17368.htm -
Nom du plan avant la barre des coordonnées
sechanbask a répondu à un(e) sujet de sechanbask dans Personnalisation, macros, DIESEL
ce code me convient alors pour moi, le sujet est résolu -
En chargeant ton LISP et en mettant le fichier DCL dans un dossier/ chemin de recherche de fichier de support, AutoCAD me dit fichier DCL introuvable. ?? C'est bête car j'en aurais bien besoin pour tirer plein de présentation en pdf alors qu'elles sont définis sur notre traceur
-
merci bonuscad ça marche comme je le souhaitais...sauf que : je ne comprends pas grand chose en lisp et ta fonction ne résout pas tous mes problème car la boite n'est pas dans le même calque que l'objet qu'elle entoure : peut être qu'avec un mix avec le code de Bred qui ne gérait pas les différentes justification du texte mais qui entourer dans le bon calque... De plus, j'aimerais que tu m'expliques comme faire pour changer l'écartement (offset) : je veux du 0.4 - comment faire pour que la fonction ne fasse que des boites - comment gérer les attributs et les attributs qui sont dans les blocs... Si j'ai l'air exigent, je m'en excuse mais j'ai l'impression que je passe ma vie pour faire ces P***** de boites... Alors si quelqu'un pouvait me faire gagner du temps sur ce problème que j'arriverais pas à résoudre en VBA... J'apprécie déjà la rotation de boite que l'on soit dans SCG, SCU non nommé, ou SCU nomé, et quelque soit la vue !! Merci par avance.
-
je suis en train d'imaginer un algorithme pour crér un style de cotation à partir d'une cote qui ne suit pas un style prédéfni.. quand je passe au code, je te passes un coup de main... si tu en as toujours besoin d'ici 3 semaines au moins
-
relis bien mon premier post, j'ai un problème... si le bloc n'existe dans les dimensions indiqués (par exemple 500x500) ni dans les fichiers ni dans le plan, je souhaite utilise le fichier Sect_rect_bloc.dwg : coller le bloc qu'il contient dans un nouveau dessin l'exposer (pour éviter les bloc imbriqué (c'est là où j'ai un problème)) pour faire le contre cadre et puis après enregistrer ce nouveau dwg pour que le programme l'utilise pour l'insertion d'une trémie en un seul bloc... cette dernière partie n'est pas faite..
-
INSERTION DE BLOC AVEC OU SAN ATTRIBUT
sechanbask a répondu à un(e) sujet de formula1 dans VBA et VB
si tu veux insérer un bloc, il faut qu'il existe dans le fichier sur lequel tu travailles, où qu'il soit contenu dans un dossier dans lequel autocad cherche. pour mon code, le bloc est dans un fichier dans un dossier dans lequel autocad fouille... le bloc est disponible dans http://cjoint.com/?lbmhZvwIsw Si tu souhaite que ton bloc arrive avec une échelle précise et dépendante des unités de dessin de ton plan, tu dois commencer par faire : Sub Insertion_de_bloc() 'pour préparer les calques Dim strCalqueActive As String Dim newlayer As AcadLayer 'pour préparer les unités Dim strUnitvar As String Dim sngCoef As Single 'pour l'insertion du bloc Dim dblDiametre As Double Dim objBloc As AcadBlockReference Dim varPins As Variant Dim dblteta As Double Dim dbldiamech As Double 'si erreur : on se retourve dans la partie "Gestion" (en fin de procédure) On Error GoTo Gestion 'on enregistre la valeur de l'unité de dessin dans la variable "strUnitvar" strUnitvar = ThisDrawing.GetVariable("INSUNITS") 'on teste la valeur de la variable "strUnitvar" Select Case strUnitvar Case 4 '(millimètre) sngCoef = 1 Case 5 '(centimètre) sngCoef = 0.1 Case 6 '(mètre) sngCoef = 0.001 End Select varPins = ThisDrawing.Utility.GetPoint(, "Veuillez choisir un point : ") dblteta = 0 dbldiamech = sngCoef Set objBloc = ThisDrawing.ModelSpace.InsertBlock(varPins, "Sect_circ_bloc.dwg", dbldiamech#, dbldiamech#, dbldiamech#, dblteta) Dim explodedObjects As Variant 'décomposition du fichier bloc pour avoir le bloc et le fichier bloc distinct explodedObjects = objBloc.Explode 'suppression du fichier bloc pour ne garder que le bloc qui possède la bonne unité... objBloc.Delete Exit Sub Gestion: Select Case Err.Number Case "-2147352567" ThisDrawing.Utility.Prompt "Annulée par l'utilisateur." Case Else Debug.Print Err.Number, Err.Description ThisDrawing.Utility.Prompt "Une erreur inconnue est survenue, veuillez contacter le développeur." End Select End Sub -
Il faut bien sûr que je donne mon fichier bloc: http://cjoint.com/?lbvidWAloI désolé pour l'oubli... en fait çà ne coince pas à l'insertion mais juste après... le bloc n'est pas décomposé en bloc contenu dans le fichier bloc. Je fais ça pour que le bloc possède des unités cohérentes... [Edité le 1/11/2007 par sechanbask]
-
INSERTION DE BLOC AVEC OU SAN ATTRIBUT
sechanbask a répondu à un(e) sujet de formula1 dans VBA et VB
regarde ici http://www.cadxp.com/sujetXForum-17368.htm Pour insérer un bloc, le plus simple c'est que le bloc soit dans un fichier, que le fichier ne contienne que ce bloc. Il faut également que le fichier soit dans un dossier support (un dossier dans lequel autocad cherche). Pour les attribut, le plus simple c'est que ton bloc contienne des attributs vides et que par la suite, tu viennes les remplir. La démarche est la suivante : -Insertion du bloc avec une échelle et une direction -recherche dans le bloc les attribut qu'il peut contenir et les renseigner (attetion 2 méthode différente si le bloc possède des attribut "CONSTANT" ou classique -update du bloc. Voilà pour l'algorithme, si tu as besoin d'un coup de main.... -
tu as cherché dans le CUI ? pour cela tape CUI et entrer ou espace ça t'ouvrira le menu de personnalisation des menus, des barres d'outils, des commandes etc.. si tu ne trouve pas doù vient le problème n'existe pas à redemander.. Bonne journée
-
Section circulaire jolie avec calorifuge
sechanbask a répondu à un(e) sujet de sechanbask dans Routines VBA
c'est normale, il te faut le bloc qui est maintenant disponible avec le code ici: http://www.cadxp.com/Downloads+index-req-getit-lid-317.html [Edité le 10/11/2007 par sechanbask] -
Mon code sert à inserer des bloc pour symboliser les remonter de gaine rectangulaire... jusqu'alors j'avais pas problème. J'inserais un bloc avec une echelle comm je veux et je faisais le contre cadre après en plolyligne (je fais ça car si je fait une echelle sur un bloc qui contient déjà le contre carde, le contre cadre aura également une échelle, donc sa largeur ne sera pas fixe : 3 cm). Mais pour des problème de manipulation, je souhaiterais faire un bloc de tout gaine plus contre cadre. Pour cela, j'avais penser à me faire une bibliothèque mais c'est long et chiant sauf si c'est VBA qui me la fait tout seul : [algorithme] -insertion du bloc avec contre cadre largeur X longeur Y -s'il n'existe pas ouvrir un nouveau fichier inserer le bloc sans contre cadre, exploser le bloc (pour ne pas avoir de bloc imbriqué ou avec le nom du fichier) faire le contre cadre créer le bloc Sect_rectangulaire_X_x_Y et enregistrer le fichier Sect_rect_X_x_Y.dwg et insérer le bloc... le problème c'est que je n'arrive pas à explosé le bloc sans contre cadre...bien que j'ai déjà utilisé la même méthode ici : http://www.cadxp.com/sujetXForum-17368.htm Sub Impact_rectangulaire() Dim sngLargeur As Single Dim sngLargeurmm As Single Dim sngHauteur As Single Dim sngHauteurmm As Single Dim dblPoints(0 To 7) As Double Dim objBloc As AcadBlockReference Dim objRectangle As AcadLWPolyline Dim objTriangle As AcadLWPolyline Dim strUnitvar As String Dim sngCoef As Single Dim booSCU As Boolean Dim dbllargech As Double Dim dblhautech As Double Dim dblteta As Double Dim varOffset As Variant 'On Error GoTo Gestion strUnitvar = ThisDrawing.GetVariable("INSUNITS") Select Case strUnitvar Case 4 '(millimètre) sngCoef = 1 Case 5 '(centimètre) sngCoef = 0.1 Case 6 '(mètre) sngCoef = 0.001 End Select sngLargeurmm = ThisDrawing.Utility.GetReal("Veuillez entrer la largeur de la gaine en mm : ") sngHauteurmm = ThisDrawing.Utility.GetReal("Veuillez entrer la hauteur de la gaine en mm : ") sngLargeur = sngLargeurmm * sngCoef dbllargech = sngLargeur / 10 sngHauteur = sngHauteurmm * sngCoef dblhautech = sngHauteur / 10 booSCU = False Dim varPointinsertion As Variant varPointinsertion = ThisDrawing.Utility.GetPoint(, "Indiquer le centre de l'impact: ") Dim strSCU As String On Error Resume Next strSCU = ThisDrawing.ActiveUCS.Name Debug.Print strSCU Select Case Err.Number Case "-2145386481" booSCU = False Debug.Print "SCG" Case "0" varPointinsertion = ThisDrawing.Utility.TranslateCoordinates(varPointinsertion, acWorld, acUCS, False) booSCU = True Case Else Debug.Print Err.Number, Err.Description ThisDrawing.Utility.Prompt "Une erreur inconnue est survenue, veuillez contacter le développeur." Exit Sub End Select 'On Error GoTo Gestion On Error GoTo 0 'Debug.Print strSCU dblteta = 0 On Error Resume Next 'Set objBloc = ThisDrawing.ModelSpace.InsertBlock(varPointinsertion, "Sect_rect_bloc.dwg", dbllargech#, dblhautech#, 1#, dblteta) Set objBloc = ThisDrawing.ModelSpace.InsertBlock(varPointinsertion, "Sect_rect_" & sngLargeurmm & "x" & sngHauteurmm & ".dwg" Or "Sect_rec_" & sngHauteurmm & "x" & sngLargeurmm & ".dwg", dbllargech#, dblhautech#, 1#, dblteta) If Err.Number <> 0 Then On Error GoTo 0 Debug.Print Err.Number Dim docObj As AcadDocument Set docObj = ThisDrawing.Application.Documents.Add Dim dblPointinsertion(0 To 2) As Double dblPointinsertion(0) = 0#: dblPointinsertion(1) = 0#: dblPointinsertion(2) = 0# Set objBloc = ThisDrawing.ModelSpace.InsertBlock(dblPointinsertion, "Sect_rect_bloc.dwg", dbllargech#, dblhautech#, 1#, dblteta) 'pourquoi il ne veut pas m'exploser le bloc alors qu'il est explosable? 'd'ailleur c'est bizarre quand je l'explose, les polignes qui constitue le bloc explosé sont déjà en ligne comme si je décomposé le bloc 2 fois? 'ça ne dépend pas du fichier de bloc car j'en ai essayé un autre et même chose... objBloc.Explode dblPoints(0) = dblPointinsertion(0) - sngLargeur / 2: dblPoints(1) = dblPointinsertion(1) + sngHauteur / 2 dblPoints(2) = dblPointinsertion(0) + sngLargeur / 2: dblPoints(3) = dblPointinsertion(1) + sngHauteur / 2 dblPoints(4) = dblPointinsertion(0) + sngLargeur / 2: dblPoints(5) = dblPointinsertion(1) - sngHauteur / 2 dblPoints(6) = dblPointinsertion(0) - sngLargeur / 2: dblPoints(7) = dblPointinsertion(1) - sngHauteur / 2 Set objRectangle = ThisDrawing.ModelSpace.AddLightWeightPolyline(dblPoints) With objRectangle .Closed = True .Update End With Dim sngTailleducadre As Single sngTailleducadre = 30 * sngCoef varOffset = objRectangle.Offset(-sngTailleducadre) objRectangle.Delete 'ThisDrawing.Application.Documents.Close Else dblPoints(0) = varPointinsertion(0) - sngLargeur / 2: dblPoints(1) = varPointinsertion(1) + sngHauteur / 2 dblPoints(2) = varPointinsertion(0) + sngLargeur / 2: dblPoints(3) = varPointinsertion(1) + sngHauteur / 2 dblPoints(4) = varPointinsertion(0) + sngLargeur / 2: dblPoints(5) = varPointinsertion(1) - sngHauteur / 2 dblPoints(6) = varPointinsertion(0) - sngLargeur / 2: dblPoints(7) = varPointinsertion(1) - sngHauteur / 2 End If Set objRectangle = ThisDrawing.ModelSpace.AddLightWeightPolyline(dblPoints) With objRectangle .Closed = True End With Debug.Print booSCU If booSCU = True Then Dim TransMatrix As Variant TransMatrix = ThisDrawing.ActiveUCS.GetUCSMatrix objBloc.TransformBy (TransMatrix) objRectangle.TransformBy (TransMatrix) End If sngTailleducadre = 30 * sngCoef varOffset = objRectangle.Offset(-sngTailleducadre) objRectangle.Delete Exit Sub Gestion: Select Case Err.Number Case "-2147352567" ThisDrawing.Utility.Prompt " Annulée par l'utilisateur." Case Else Debug.Print Err.Number, Err.Description ThisDrawing.Utility.Prompt "Une erreur inconnue est survenue, veuillez contacter le développeur." End Select End Sub
