Đến nội dung


Hình ảnh
- - - - -

AutoCAD .NET


  • Please log in to reply
48 replies to this topic

#41 tiendung89

tiendung89

    biết lệnh move

  • Members
  • PipPipPip
  • 121 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 28 August 2014 - 02:21 PM

a gia_bach cho e hỏi thêm về đường dẫn tương đối trong VB.net với ạ

ví dụ về cách dùng nó như thế nào?

e có file .chm trong Resources bây giờ muốn copy sang máy khác mà vẫn chạy được thì e phải dùng đường dẫn như thê nào


  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#42 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 29 August 2014 - 09:27 AM

a gia_bach cho e hỏi thêm về đường dẫn tương đối trong VB.net với ạ

ví dụ về cách dùng nó như thế nào?

e có file .chm trong Resources bây giờ muốn copy sang máy khác mà vẫn chạy được thì e phải dùng đường dẫn như thê nào

Nếu dùng : Dim appPath As String = System.Reflection.Assembly.GetExecutingAssembly.Location()

 

thì copy các file trong Resources vào cùng thư mục với file *.dll hay *.exe là được.


  • 0

#43 tiendung89

tiendung89

    biết lệnh move

  • Members
  • PipPipPip
  • 121 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 03 September 2014 - 02:36 PM

thanks a, e đã làm được

(e muốn nhấn vào nút Thanks mà sao không thấy nhỉ)


  • 1
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#44 thinhtutn

thinhtutn

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 14 July 2015 - 08:45 AM

các bác hướng dẫn cho em cách đổi từ chuỗi sang dạng số thập phân  và từ số thập phân sang dạng chuỗi với ạ. Em giờ mới đang bắt đầu ngâm cứu.

P/S: Thêm cả phần điền số thập phân với ạ.


  • 0

#45 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 14 July 2015 - 09:32 AM

các bác hướng dẫn cho em cách đổi từ chuỗi sang dạng số thập phân  và từ số thập phân sang dạng chuỗi với ạ. Em giờ mới đang bắt đầu ngâm cứu

1. đổi từ chuỗi sang số :

 - dùng Parse https://msdn.microso...(v=vs.110).aspx

   hay https://msdn.microso...(v=vs.110).aspx

- TryParse https://msdn.microso...(v=vs.110).aspx

   hay https://msdn.microso...(v=vs.110).aspx

 

2. đổi từ số sang chuỗi 

 - dùng Convert https://msdn.microso...(v=vs.110).aspx


  • 1

#46 thinhtutn

thinhtutn

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 14 July 2015 - 03:30 PM

Em có code thế này

Public Class Class1
    Sub Add_Line(ByVal X1, ByVal Y1, ByVal X2, ByVal Y2)
        '' Get the current document and database
        Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
        Dim acCurDb As Database = acDoc.Database

        '' Start a transaction
        Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()

            '' Open the Block table for read
            Dim acBlkTbl As BlockTable
            acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, DatabaseServices.OpenMode.ForRead)

            '' Open the Block table record Model space for write
            Dim acBlkTblRec As BlockTableRecord
            acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), DatabaseServices.OpenMode.ForWrite)

            '' Create a line that starts at 5,5 and ends at 12,3
            Dim acLine As Line = New Line(New Point3d(X1, Y1, 0), New Point3d(X2, Y2, 0))

            acLine.SetDatabaseDefaults()

            '' Add the new object to the block table record and the transaction
            acBlkTblRec.AppendEntity(acLine)
            acTrans.AddNewlyCreatedDBObject(acLine, True)

            '' Save the new object to the database
            acTrans.Commit()
        End Using
    End Sub
    <CommandMethod("caotrinh")> Public Sub Dien_cao_trinh()
        '' Get the current database and start the Transaction Manager
        Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
        Dim acCurDb As Database = acDoc.Database
        Dim P1 As PromptPointResult
        Dim P2 As PromptPointResult
        Dim pPtOpts As PromptPointOptions = New PromptPointOptions("")

        ''Nhap ty le ban ve
        Dim tlvOpts As PromptDoubleOptions = New PromptDoubleOptions(vbLf & "Nhập tỷ lệ khung bản vẽ: (1/...10, 20, 50, 100, ...): ")
        Dim tlbv As PromptDoubleResult = acDoc.Editor.GetDouble(tlvOpts)
        Dim TLV = tlbv.Value / 1000

        '' Prompt for the start point
        pPtOpts.Message = vbLf & "Pick điểm mốc: "
        P1 = acDoc.Editor.GetPoint(pPtOpts)

        '' Exit if the user presses ESC or cancels the command
        If P1.Status = PromptStatus.Cancel Then Exit Sub

        '' Nhap cao do moc
        Dim CDMOC_Opts As PromptDoubleOptions = New PromptDoubleOptions(vbLf & "Nhập cao độ mốc: ")
        Dim CDMOC As PromptDoubleResult = acDoc.Editor.GetDouble(CDMOC_Opts)

        While CDMOC.Value + P1.Value.Y <> 0
            '' Prompt for the end point
            pPtOpts.Message = vbLf & "Pick điểm điền cao độ: "
            pPtOpts.UseBasePoint = True
            pPtOpts.BasePoint = P1.Value
            P2 = acDoc.Editor.GetPoint(pPtOpts)

            If P2.Status = PromptStatus.Cancel Then Exit Sub

            '' Start a transaction
            Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
                Dim acBlkTbl As BlockTable
                Dim acBlkTblRec As BlockTableRecord

                '' Open Model space for write
                acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, DatabaseServices.OpenMode.ForRead)
                acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), DatabaseServices.OpenMode.ForWrite)

                Dim pKeyOpts As PromptKeywordOptions = New PromptKeywordOptions("")
                pKeyOpts.Message = vbLf & "Chọn hướng điền "
                pKeyOpts.Keywords.Add("Trai")
                pKeyOpts.Keywords.Add("Phai")
                pKeyOpts.AllowNone = False
                Dim pKeyRes As PromptResult = acDoc.Editor.GetKeywords(pKeyOpts)
                If pKeyRes.Status = PromptStatus.Cancel Then Exit Sub
                If pKeyRes.StringResult = "Phai" Then
                    '' Vẽ ký hiệu cao trình
                    Add_Line(P2.Value.X, P2.Value.Y, P2.Value.X + 3.6 * TLV, P2.Value.Y)
                    Add_Line(P2.Value.X + 3 * TLV, P2.Value.Y, P2.Value.X + 3 * TLV, P2.Value.Y + 7.5 * TLV)
                    Add_Line(P2.Value.X + 1.6 * TLV, P2.Value.Y + 3.8 * TLV, P2.Value.X + 10.6 * TLV, P2.Value.Y + 3.8 * TLV)
                    Add_Line(P2.Value.X + 3.0 * TLV, P2.Value.Y, P2.Value.X + 2.6 * TLV, P2.Value.Y + 2 * TLV)
                    Add_Line(P2.Value.X + 2.6 * TLV, P2.Value.Y + 2 * TLV, P2.Value.X + 3.4 * TLV, P2.Value.Y + 2 * TLV)
                    Add_Line(P2.Value.X + 3.4 * TLV, P2.Value.Y + 2 * TLV, P2.Value.X + 3 * TLV, P2.Value.Y)
                    '' Điền cao trình
                    Dim acText As DBText = New DBText()
                    acText.SetDatabaseDefaults()
                    acText.Position = New Point3d(P2.Value.X + 3.9 * TLV, P2.Value.Y + 4.1 * TLV, 0)
                    acText.Height = TLV * 2
                    acText.TextString = Format(CDMOC.Value - P1.Value.Y + P2.Value.Y, "00.00") ''ChuoiRes.StringResult
                    acBlkTblRec.AppendEntity(acText)
                    acTrans.AddNewlyCreatedDBObject(acText, True)
                    If P2.Status = PromptStatus.Cancel Then Exit Sub
                Else
                    '' Vẽ ký hiệu cao trình
                    Add_Line(P2.Value.X, P2.Value.Y, P2.Value.X - 3.6 * TLV, P2.Value.Y)
                    Add_Line(P2.Value.X - 3 * TLV, P2.Value.Y, P2.Value.X - 3 * TLV, P2.Value.Y + 7.5 * TLV)
                    Add_Line(P2.Value.X - 1.6 * TLV, P2.Value.Y + 3.8 * TLV, P2.Value.X - 10.6 * TLV, P2.Value.Y + 3.8 * TLV)
                    Add_Line(P2.Value.X - 3.0 * TLV, P2.Value.Y, P2.Value.X - 2.6 * TLV, P2.Value.Y + 2 * TLV)
                    Add_Line(P2.Value.X - 2.6 * TLV, P2.Value.Y + 2 * TLV, P2.Value.X - 3.4 * TLV, P2.Value.Y + 2 * TLV)
                    Add_Line(P2.Value.X - 3.4 * TLV, P2.Value.Y + 2 * TLV, P2.Value.X - 3 * TLV, P2.Value.Y)

                    '' Điền cao trình
                    Dim acText As DBText = New DBText()
                    acText.SetDatabaseDefaults()
                    acText.HorizontalMode = TextHorizontalMode.TextRight
                    acText.AlignmentPoint = New Point3d(P2.Value.X - 3.9 * TLV, P2.Value.Y + 4.1 * TLV, 0)
                    acText.Height = TLV * 2
                    acText.TextString = Format(CDMOC.Value - P1.Value.Y + P2.Value.Y, "00.00") 
                    acBlkTblRec.AppendEntity(acText)
                    acTrans.AddNewlyCreatedDBObject(acText, True)
                    If P2.Status = PromptStatus.Cancel Then Exit Sub
                End If
                '' Commit the changes and dispose of the transaction
                acTrans.Commit()
            End Using
        End While
    End Sub
End Class

Các bác thêm giúp em phần cao độ mốc nếu không nhập trực tiếp thì có thể lấy giá trị trên màn hình với. 


  • 0

#47 thinhtutn

thinhtutn

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 15 July 2015 - 10:24 AM

Bác gia_bach chỉ em cách lấy số và chữ từ màn hình với. Em cảm ơn bác!!!


  • 0

#48 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 15 July 2015 - 04:28 PM

Bác gia_bach chỉ em cách lấy số và chữ từ màn hình với. Em cảm ơn bác!!!

Tham khảo :

    Public Shared caodoValue As Double
    <CommandMethod("InputDoubleOrGet")> Public Shared Sub InputDoubleOrGet()
        If caodoValue = New Double() Then
            caodoValue = 0
        End If
        Dim doc As Document = Application.DocumentManager.MdiActiveDocument
        Dim db As Database = doc.Database
        Dim ed As Editor = doc.Editor

        Dim pIntOpts As New PromptDoubleOptions("")
        pIntOpts.Message = vbLf & "Nhập cao độ: "
        pIntOpts.Keywords.Add("Pick point")
        pIntOpts.Keywords.Add("Selec Text")
        pIntOpts.DefaultValue = caodoValue
        pIntOpts.AllowNone = True

        ' Get the value entered by the user
        Dim pDouRes As PromptDoubleResult = ed.GetDouble(pIntOpts)
        If pDouRes.Status = PromptStatus.Keyword Then
            If pDouRes.StringResult.StartsWith("Pick") Then
                Dim insPt As New Point3d()
                Dim opt As New PromptPointOptions(vbLf & "Chọn điểm lấy cao độ:")
                opt.AllowNone = False
                Dim ppr As PromptPointResult = ed.GetPoint(opt)
                If ppr.Status = PromptStatus.OK Then
                    insPt = ppr.Value.TransformBy(ed.CurrentUserCoordinateSystem)
                    caodoValue = insPt.Y
                End If
            ElseIf pDouRes.StringResult.StartsWith("Selec") Then
                Dim peo As New PromptEntityOptions(vbLf & "Chọn Text cao độ : ")
                peo.SetRejectMessage("Đối tượng không phải là Text!")
                peo.AddAllowedClass(GetType(DBText), False)
                Dim per As PromptEntityResult = ed.GetEntity(peo)
                If per.Status = PromptStatus.OK Then
                    Using tr As Transaction = db.TransactionManager.StartTransaction()
                        Dim btr As BlockTableRecord = DirectCast(tr.GetObject(db.CurrentSpaceId, OpenMode.ForRead), BlockTableRecord)
                        Dim txt As DBText = DirectCast(tr.GetObject(per.ObjectId, OpenMode.ForRead), DBText)
                        Dim doubleVal As Double
                        If Double.TryParse(txt.TextString, doubleVal) Then
                            caodoValue = doubleVal
                        End If
                    End Using
                End If
            End If
        Else
            caodoValue = pDouRes.Value
        End If

        Application.ShowAlertDialog("Cao độ: " + caodoValue.ToString())
    End Sub


  • 1

#49 thinhtutn

thinhtutn

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 15 July 2015 - 05:55 PM

Cảm ơn bác gia_bach rất nhiều. 


  • 0