QUẢNG CÁO ĐẦU TRANG

Collapse

Thông báo

Collapse
No announcement yet.

ObjectARX....co ai quan tâm không?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • ObjectARX....co ai quan tâm không?

    Chào mọi người!
    Mình lập thread này với mục đích: chia sẻ mốt số kiến thức về ObjectARX, học tập trao đổi với những bạn cùng quan tâm về ObjectARX và .NET (in CAD).
    Như đã biết ObjectARX và ObjectDBX là thành phần xương sống trong những phiên bản CAD(AutoCAD) trong nhiều năm nay. ObjectDBX là cách thức tổ chức dữ liệu trong các dịnh dạng file của CAD và nhiều thương phẩm khác của Autodesk. Với ObjectDBX, ta có thể viết những ứng dụng độc lập để xử lí những định dạng file .dwg, .dfx... của Autodesk. SDK cho ObjectDBX.....là không miễn phí($5000 cho năm đầu tiên, $2500 cho mỗi năm tiếp theo là điều kiện để có được giấy phép xử dụng ObjectDBX's SDK!-----Mà cái này là....là ko có ***** đâu nha ) nên cái này chắc chỉ phù hợp với những công ty tin học thực sự quan tâm(do đó ko bàn đến ObjectDBX ở đây. ObjectARX(The AutoCAD Runtime Extension với SDK miễn phí!) là môi trường phát triển dành riêng cho CAD, là hướng đi chính để thêm vào những tính năng mới cho các phiên bản CAD(có thể thấy khá nhiều các modul .arx trong các phiên bản CAD - các file có đuôi .arx). Trong môi trường Windows, .arx hoạt động như những file .dll thường thấy(hoạt động theo kiểu "call back").
    Chú thích về cơ chế call back(ko hẳn đã đầy đủ, nhưng cơ bản là thế):
    Chương trình chính được kich hoạt(*.exe), 1 hàm, thủ tục nào đó thực hiện 1 lời gọi tới 1 .arx====> .arx bắt đầu 1 thread mới, bắt đầu thực hiện những chức năng được lập trình(.arx là file bạn cần lập trình cho công việc của mình) tại 1 EntyPoint() (tương tự như main() và Winmain() trong các file .exe khi lập trình bằng C++). Các .arx sẽ thực hiên các kết nối với chuong trình chính( nhận, trả kết quả, thực hiện tính toán...). Và cơ bản là các .arx và chương trình chính chạy trên những thread độc lập với nhau(chắc cơ chế này chỉ xuất hiện sau khi có phiên bản Cad for Windows...)



    .ARX không phải là 1 gói thủ tục dạng .bat, mà thực sự là 1 file .dll (mà .dll là gì thì.....phải hỏi Bill Gate ) do đó nó có rất nhiều sức mạnh và tính uyển chuyển. ObjectARX sau nhiều năm phát triển đã trở thành 1 hệ thông phân cấp phức tạp và tính trừu tượng cao, đó là hệ thống các lớp, các tập hợp...được viết bằng ngôn ngữ C++. Nhưng có thể bạn sẻ thấy cú pháp trong ARX khá khó hiểu(ko thuần tuý như C++ được học trong trường học ), đấy chính là ý cơ bản về tính trừu tượng tôi nói ở đây. Xét 1 ví dụ cơ bản(ví dụ của tôi thôi)
    1 câu lệnh trong ARX:
    ErrorState Sum(*int a, *int b, *int c);
    Sẽ rất khó hiểu và cảm thấy như có mâu thuẫn phải không? Câu lệnh như kiểu như Sum() ở trên rất hay gặp khi làm viêc với ObjectARX, thực ra Sum() chính là 1 lệnh macro( macro hiểu theo nghĩa là 1 lệnh đơn, mà cơ chế thực thi bên trong nó đã được định nghĩa từ trước - ở mức trên của lớp sử dụng lệnh . Nên cái chúng ta cần là phải tìm hiểu xem lệnh trên đã được định nghỉa như thế nào(nên thực sự cần phải tham khảo chi tiết từ tài liệu SDK...)
    Ví dụ như:
    Int Sum(*int a, *int b, *int c) có thể sẻ khiến ta dễ hình dung hơn, nhưng câu lệnh ErrorState Sum() lại là thứ thực tế ta bắt gặp, do đó trong ARX ngữ nghỉa của lênh rất dể khiến ta nhầm lẫn nếu ko chú ý đến giá trị trả về...Điều muốn nói ở đây, là với những macro cần phải biết dầy đủ về ý nghỉa các đối số, giá tri trả về của nó (biết như thế là đủ!). Có thể mọi người sẽ hỏi biết đầy đủ về cơ chế của thưc thi của nó có tốt hơn ko, câu trả lời ở đây là: có và không.
    - Có: khi ta muốn định nghĩa đè macro đó, hay nhưng người muốn tìm hiểu thuật toán mà macro đó đã làm...
    - Không: Những thứ đó do 1 công ty hàng đầu phát triển trong nhiều năm...đảm bảo sự ổn địnnh, tin tưởng....và đa số là muốn cũng ko được vì nó là độc quyền của hãng sản xuất(trong SDK họ cho biết đến đâu thì được vây thôi). Cơ chế thực thi đã được định nghĩa và biên dịch thành những file thư viện(.lib, .dll)

    Ví dụ tôi là nhà sản xuất, tôi có thể định nghĩa câu lệnh trên như sau:
    ErrorState Sum(*int a, *int b, *int c)
    {c = a + b;
    if(c <> null) return OK!;
    }
    và trong SDK của tôi mô tả: Lệnh Sum() thực hiện c = a + b, nếu thưc hiện thành công thì trả về OK!(thông báo cho ErrorState đã thực hiện thành công Sum() và ngược lại, khi lênh Sum() thực hiện thành công ta có được giá trị c như mong muốn cho những bước tiêp theo. Tương tự, đó là những điều cần và đủ để bạn làm việc với các macro khác trong ObjectARX.


    ...chết thật, bài dài quá rồi .
    Nếu mọi người hứng thú, bài sau tôi giới thiệu về "The ObjectARX Managed Wrapper Classes " để có thể làm việc với các đối tượng của ObjectARX thông qua ngôn ngữ Visual Basic(VB.NET).
    Chào mọi người, chào buổi sáng!

  • #2
    Ðề: ObjectARX....co ai quan tâm không?

    hii bạn có phần mềm nay k gởi cho minh với

    Ghi chú


    • #3
      Ðề: ObjectARX....co ai quan tâm không?

      Theo xu hướng phát triển của công nghệ, ObjectARX - API của AutoCad đã và đang chuyển đổi sang.NET - API(AutoCAD.NET - API). Nghĩa là bạn có thể có được sức mạnh của ARX(hiện tại 95% những thứ có thể làm được với ARX đều có thể làm được với.NET API...)..NET API có được thông qua cái gọi là Warpper ObjectARX API(nghĩa là bao gói lại các lớp, thư viện được viết bằng Native Code để có thể làm việc như các lớp, thư viên của .NET...). Để có thể làm việc với.NET API bạn cần những gì? Bạn cần kiến thức, kỹ năng về.NET và 1 ngôn ngữ hỗ trợ.NET (C#, VB.NET...), về cơ bản các ngôn ngữ trong.NET là giống nhau (sự khác nhau lớn nhất chỉ là cú pháp thôi, hay chọn ngôn ngữ quen thuộc với bản thân...). Sau đó là nghiên cứu.NET API của CAD (xem chúng phân cấp, tổ chức như thế nào....) và bắt đầu với những ví dụ đơn giản. Bạn lên tham khảo những tài liệu từ website của microsoft và những Blogs liên quan trên mạng, tham gia(hay chi là tham khảo....) từ những nhóm thảo luận trên mạng...
      Sẽ vất vả và khó khăn đó(không phải ngày 1 ngày 2 là nắm bắt được như những ngôn ngữ dạng 'SubClassing' đâu bạn), nhưng nếu bạn quyết tâm thì...Hãy cân nhắc kĩ trước khi lựa chọn. Nhưng theo ý kiến của tôi và nhiều người khác, thì việc tiếp cận với.NET API (hay còn gọi là :The ObjectARX Managed Wrapper Classes) thú vị và dễ hơn nhiều với việc tiếp cận ObjectARX, hơn nữa ".NEt is Future!!!"

      Bạn có thể tham khảo địa chỉ sau:
      http://discussion.autodesk.com/forum.jspa?forumID=152

      Ghi chú


      • #4
        Ðề: ObjectARX....co ai quan tâm không?

        Nhưng mà Kidsmart này, kiếm ObjectArx ở đâu nhỉ? Em tìm mãi không ra, bác chỉ giúp được không?

        Ghi chú


        • #5
          Ðề: ObjectARX....co ai quan tâm không?

          Bạn lên website của Autodesk, và phải đăng ký thì mới tải được. Cái tôi nói đến là bộ SDK(Software Deverlopment Kit) của Autodesk, trong đó bao gồm tài liệu(rất quan trọng!) các file thư viện(.lib;.dll)...Lưu ý, để có thể làm việc với ObjectARX(2005, 2006) bạn phải dùng bộ Visual Studio 2002(VC++ 7.0) - ko được dùng bản mới hơn(có sự ko tương thích giữa VC++ 7.1 với VC++7.0); Để làm việc với AutoCAD.NET API bạn có thể dùng VS 2002, VS 2003(C# hoặc VB.NET) hay mới hơn(VS 2005 - beta).
          BẠn có thể tham khảo địa chỉ sau để có thông tin chi tiết.
          http://usa.autodesk.com/adsk/servlet...112&id=1911627

          Ghi chú


          • #6
            Ðề: ObjectARX....co ai quan tâm không?

            Thanks, em đang load nó về. Có gì em sẽ thông tin lại

            Ghi chú


            • #7
              Ðề: ObjectARX....co ai quan tâm không?

              Mình biết ngay là có ngày CAD cũng đổi sang.NET mà, nhưng mà mình thấy việc đổi sang.NET sẽ có lợi ích gì hơn nữa vậy bạn? Chứ mình thấy như thế này thì đã ổn lắm rồi, chứ chuyển sang.NET ôm thêm 1 đống CLASS nữa mà có khi anh em mình dân XD thì có biết mô tê gì về nó đâu. Trước mắt chỉ thấy nặng máy quá trời, chẳng làm ăn gì thêm được
              Bạn Kidsmart1981:
              Nếu bạn có phiên bản ARX nào chạy cho Cad2004 thì bạn cho mình biết với nhé. Mình đang tìm nó, muốn xem nó như thế nào, thấy quảng cáo dữ quá mà chưa tiếp cận đươc.

              Ghi chú


              • #8
                Ðề: ObjectARX....co ai quan tâm không?

                .NET là xu hướng...của thời đại (!), nói thế thôi chứ chuyển sang.NET có nhiều lợi thế lắm chứ, tôi điểm qua 1 vài lợi thế:
                - Để sử dụng được NET farmework 1 cách đầy đủ, NET farmework là nền tảng hướng đối tượng, linh hoạt nhất từ trước đến nay (ko phải tuyên truyền đâu nha!). Và với 1 nền tảng tốt và linh hoạt thì việc phát triển và mở rộng sẽ dễ dàng hơn.
                - Tất nhiên, ko phải ko có cách để có thể gọi các COM server từ NET module và ngược lại, nhưng những giải pháp đó chỉ là tình thế trong giai đoạn chuyển giao...(và đều có những nhược điểm của nó).
                - Việc học .NET(và trình biên dịch dựa trên.NET) rõ dàng là dễ hơn so với C/C++, đơn giản là vì.NET là nền tảng mới, nên nó sẽ kế thừa và phát huy những ưu điểm của những ngôn ngữ trước đây cũng như khắc phục nhược điểm...
                Trả lời bạn Minh, hiện tại AutoCAD.NET API mới chỉ là Wrapper lại ObjectARX thôi(được khoảng 95%), cũng có chút bất cập (chắc ko thay đổi được trong ngày 1 ngày 2) là ko thể tạo đối tượng do người dùng định nghĩa được bằng NET API, vẫn phải làm bằng ObjectARX sau đó wrapper lại để sử dụng với NET API.

                Bạn muốn thử 1 ví dụ thực tế về ObjectARX? Bạn dùng thử AutoXlsTable chưa (cái này làm bằng ObjectARX và COM, cũng ko có gì là ghê gớm nhưng đó là 1 ví dụ, và bạn đếm được bao nhiêu file.arx trong thư mục AutoCAD 2006 - nhưng cái này la Autodesk làm). Hiện tại tôi đang làm 1 cái gọi là "VNCAD Plus" (cái này thì "ghê gớm" lắm! ) khi nào xong sẽ cho bạn dùng thử.
                Last edited by Kidsmart1981; 15-07-2005, 02:12 PM.

                Ghi chú


                • #9
                  Ðề: ObjectARX....co ai quan tâm không?

                  Cho hỏi ké một câu.
                  DelphiARX, có ai quan tâm không? Hê hê.

                  Bà con có thể search trên net và tìm thêm một số rất ít thông tin về nó.

                  Ghi chú


                  • #10
                    Ðề: ObjectARX....co ai quan tâm không?

                    Do không biết về Delphi....nên không quan tâm . Nhưng có phải Delphi là môi trường trung gian để làm việc với ObjectARX API không bạn? Mà lưu ý 1 điều là: các AutoCAD API (objectARX ) của phiên bản mới có thể chạy được trên các phiên bản cũ...nhưng điều ngược lại là không đúng! Do đó lên cân nhắc khi lựa chọn, mà bạn cho hỏi DelphiARX còn được phát triển không?
                    Chúc 1 ngày mới vui vẻ, hiệu quả.

                    Ghi chú


                    • #11
                      Ðề: ObjectARX....co ai quan tâm không?

                      dạ, cho em hỏi. em bắt đầu nghiên cứu Object ARX, thầy em bảo nó rất mạnh. Các Pro cho em hỏi là em nên bắt đầu nó bằng VC++ hay .NET (nhưng cả 2 ngôn ngữ này em đều chưa bít, em định đi học thêm các bác ạ). Vậy nên học cái nào đây ????????. Chúc buổi sáng vui vẻ. Khi nào có dịp, xin thỉnh giáo bác kidsmart1981

                      Ghi chú


                      • #12
                        Ðề: ObjectARX....co ai quan tâm không?

                        DelphiARX dễ chịu hơn cho người mới bắt đầu. Mình đã dùng cái này để tạo ra code .arx với tốc độ rất nhanh chẳng kém gì VBA. Tuy nhiên cũng phải nói rằng cái món này không được sự hỗ trợ phát triển nhiều. Người dùng chủ yếu là ở Nhật Bản và Nga.

                        Mình cũng cho rằng Delphi là một môi trường trung gian làm việc với ObjectARX. Nếu ai đó chỉ muốn tạo nhanh các bản vẽ với thời gian đầu tư ít, theo tôi có thể dùng DelphiARX, còn phát triển lâu dài thì đương nhiên là theo ObjectARX rồi.

                        To ButChi: hãy bắt đầu từ VC++.

                        Ghi chú


                        • #13
                          Ðề: ObjectARX....co ai quan tâm không?

                          Oke, Em sẽ bắt đầu ngay trong tuần tới. Em nghĩ khoảng 2 tháng là có thể hòm hòm tất cả VC++ và Object ARX. Lúc đó các bác kiếm việc về cho em luyện tập nhé. (vừa kiếm tiền vừa học hỏi nghiên cứu luôn) .

                          Em đã từng làm Lisp rồi, nhưng nó lằng nhằng quá. Làm được những cái như của bác Nguyễn Lam thì quả là một cong trình đồ sộ.

                          VBA em cũng đã từng làm. Tuy có thêm cơ sở dữ liệu nhưng bất cập ở chỗ không thao tác được với tác với các DFX Groups codes được. Mà nó còn kém ở nhiều thứ lắm. không thể liệt kê hết ra được. Vì thế em vẫn đang tìm kiếm một ngôn ngữ tiếp cận nó tốt hơn. Nghe nói Object ARX rất mạnh. Em sẽ thử cái này xem sao. Có gì xin được chỉ giáo
                          Chúc cuối tuần vui vẻ.

                          Best regard .
                          Chicken
                          Last edited by But Chi; 16-07-2005, 02:44 PM.

                          Ghi chú


                          • #14
                            Ðề: ObjectARX....co ai quan tâm không?

                            Theo tôi bạn lên bắt đầu với.NET và C# (bỏ qua C++), với C# và AutoCAD.NET bạn sẽ tiếp xúc với những khái niệm rất hay và nhiều sức mạnh như Property và Interface và 1 điều nữa sử dụng được NET farmework của Microsoft(rất thuận tiện trong việc liên kết các với các ứng dụng khác từ chương trình bạn viết, và đảm bảo có được sự hỗ trợ phát triển lâu dài.). Vậy nha, theo tôi bạn bắt đầu với.NET và C# cùng với việc nghiên cứu về cơ chế hoạt động của AutoCAD DataBase (chỉ nắm lấy cơ chế thôi nha, không đi xâu vào cú pháp....sẽ gây khó khăn khi chuyển sang phát triển với C#).
                            Hiện nay Word 2003 và Excel 2003 đã hỗ trợ .NET, và theo lộ trình của Microsoft thì trong tương lai gần (1-2 năm tới) sẽ không còn cái gọi là VBA nữa....Mọi người chú ý nhá!

                            Đính chính lại cho bạn But Chi:
                            .NET là 1 nền tảng, bộ khung(framework)...chứ không phải ngôn ngữ bạn à. Các ngôn ngữ xây dựng trên nền tảng.NET như C#, VB.net, Delphi.net...
                            Chỉ có ngôn ngữ C++ chứ không có ngôn ngữ VC++, VC++ là môi trường phát triển C++ trực quan của Microsoft(VC++ thường đi kèm với 1 hệ thống thư viện của Microsoft như MFC...)
                            Không phải muốn làm bạn chùn bước, C++ và C# nó hay và thâm sâu lắm.....cứ bình tĩnh lĩnh hội....không gấp được đâu; và ObjectARX thì manh đấy...nhưng phức tạp đấy...cứ bình tĩnh nghiền ngẫm nha.
                            Thôi nha, tôi quay lại làm tiếp cái VNCAD Plus đây! Tôi cũng mới tốt nghiệp thôi (đang thất nghiệp ) có kinh nghiệm kiếm tiền nào...."chia sẻ" tôi với nha.
                            ...Have fun with learning!

                            Ghi chú


                            • #15
                              Ðề: ObjectARX....co ai quan tâm không?

                              Ban kidmarts81 ARX chạy trên VC++6.0 hay là AutoDesk có 1 công cụ viết ra file ARX à, vậy bạn cho mình cái bộ setup đó với. Hôm trước mình hỏi mà bạn chưa trả lòi mình là kiếm bộ cái đặt ARX ở đâu? bạn có thì share cho anh em với.
                              Bạn bút chì:
                              Còn bạn nào nói VBA yếu, mình kô hiểu bạn nói nó yếu ở chổ nào? Bạn có thể bỏ chút ít thời gian kể cho mình nghe là nó yếu ở chổ nào ko? Mình mới làm về nó nên bạn có thể chỉ thêm cho mình với. Chân thành cám ơn bạn
                              Anh Linh:
                              DELPHIARX em nghe anh quảng cáo dữ quá. Nếu anh có bộ setup tạo ra thì cho em anh với. Anh đúng là chơi hàng hiếm ko đó nhe. Từ Midas giờ đến cái thứ này, hehe. Chơi hàng hiệu ko vậy ông anh . Share cho anh em để mở mang kiến thức với
                              Last edited by Tran Duc Minh; 17-07-2005, 12:47 PM.

                              Ghi chú

                              Working...
                              X