วันอังคารที่ 29 กันยายน พ.ศ. 2563

load และ save Autodesk forge Viewer measurement

 คำสั่งใน Javascript สำหรับ Forge Viewer Measurement Extension V7.x


const extension = viewer.getExtension('Autodesk.Measure');

เมื่อ เขียน จะได้  array ของ measurement

var xx1=extension.getMeasurementList() 

var xx2=xx1[0]  สมมติเอาตัวที่ 0

ไปลบ measurement ออกให้หมด. extension.deleteMeasurements()

extension.setActive(true);
extension.setMeasurementList(xx2)
extension.setActive(false);
จะแสดงกลับมา
ต้องการ Calibrate ให้
extension.forceCAlibrate=1
แล้วเลือกวาง Measurement

c# เชื่อม mongodb

 Mongodb ที่จะเชื่อมให้ทดสอบ จาก Command line ก่อนว่า Ip และ port ใช้ได้ใหม

จากนั้น ติดต่อโดย

สร้าง Class ให้ตรงกับ ใน Database

เช่นใน Database ชื่อ admin และ มี Collections students

  1. _id
    :
    5f732bb0bbf8cd98789271b8
  2. name
    :
    "abcd"
  3. data
    :
    "xxx"


สร้าง Class

 public class studentsinfo

    {

        public ObjectId _id { get; set; }

        public string name { get; set; }

        public string data { get; set; }

    }



ในการติดต่อให้ ติดต่อโดนลง nuget ใน Visualstudio

nuget install mongoldb.driver


สำหรับ Code ใน C#


 {

        List<string> names = new List<string>();

                                                                                    // user : password      @ip:port.    /                       database assign to

        MongoClient client = new MongoClient("mongodb://admin:passw@192.168.4.1:2277/admin");



        var myDB = client.GetDatabase("admin");

      

        var Students = myDB.GetCollection<studentsinfo>("students");



        foreach (studentsinfo Astudent in Students.Find(name=> true).ToList()) 

        {

         

            names.Add(Astudent.name);

        }

        ListBox1.DataSource = names;

        ListBox1.DataBind();

    

    }


สำหรับ Insert 

 {

        var dbClient = new MongoClient(constr);


        IMongoDatabase db = dbClient.GetDatabase("admin");


        var cdb = db.GetCollection<BsonDocument>("students");


        var doc = new BsonDocument

            {

                {"name", "BMW"},

                {"data", "34621"}

            };


        cdb.InsertOne(doc);

    }

ถ้า Update ต้องมี 3 คำสั่ง filter,updatedata,Update

   var filter = Builders<BsonDocument>.Filter.Eq("name", "ชื่อ");
            var update = Builders<BsonDocument>.Update.Set("data", 52000);

            cdb.UpdateOne(filter, update);


วันจันทร์ที่ 28 กันยายน พ.ศ. 2563

javascript ใน ASPX call และ ส่ง Data Method ใน c#

 ASP เป็น ระบบโปรแกรมที่ใช้ทำ Web ของ Microsoft IIS สามารถทำงาน เชื่อมกับ Javascript ได้

โดยใช้ 

[WebMethod] ก้บ asp:ScriptManager

ตัวอย่างจะมี Button ทั้ง 2 ชนิด เป็น Asp:Button และ html button

code ใน Client Front

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>


<!DOCTYPE html>


<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">  

    <title></title>  

    <script type="text/javascript">  

        function SendToback() {  

           var name = document.getElementById('<%=txtname.ClientID %>').value;  

            var testStr = "client";

  

            PageMethods.doBackEnd(name, testStr, onSucess, onError);

           function onSucess(result) {  

                alert(result);  

            }  

  

            function onError(result) {  

                alert('Something wrong.');  

            }  

        }  

   </script>  

</head>  

<body>



    <form id="form1" runat="server">

   <div>  

    <p>Javascript send to Postbacks.</p>  

  

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>  

  

    <asp:TextBox ID="txtname" runat="server"></asp:TextBox>  

    <br />  

   

    <asp:Button ID="btnCreateAccount" runat="server" Text="Asp" OnClientClick="SendToback(); return false;" />  

     

    </form> 

     <input id="Button1" type="button" value="html" onclick="SendToback();" /></div>  

</body>

</html>



สำหรับ back ใน c#


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Web.UI;

using System.Web.UI.WebControls;


public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {


    }

    [WebMethod]

    public static string doBackEnd(string name, string text)

    {

        string result = "Receive " + name + ". text = '" + text + "'.";

        return result;

    }

}

วันอาทิตย์ที่ 27 กันยายน พ.ศ. 2563

การเชื่อมโยง Web html. javascript client กับ NodeJs server

 การส่งค่า ระหว่าง Web Html กับ NodeJs ทั้ง 2 ทาง ทำได้ 2 วิธี คือ เป็น Web Post กับ Javascript

ใน ส่วนของ server จำเป็นต้อง Install Tool เพิ่ม 2 ตัว ได้แก่ express กับ body-parser

สร้าง folder เช่น nodeExpress

คำสั่ง

cd nodeExpress

npm install express

nom install body-parser

File server.js


const express = require('express');

const bodyParser = require('body-parser');

const app = express();

// ให้ แยก body ทำ Urlencode

app.use(bodyParser.urlencoded({ extended: true }));

//ส่ง Index.html ให้แสดงเป็น Root

app.get('/', function(request, response){

  response.sendFile(__dirname+'/index.html');

});


// สำหรับการ Form Post

app.post('/example', (req, res) => {

  console.log(req.body.fname) // ระวังการใช้ Quote จะใช้ กับ Express ต้องเป็นแบบตย

  res.send(`Full name is:${req.body.fname} ${req.body.lname}.`);

  console.log(`${req.body.fname}`);

});


// สำหรับ javascript


app.post('/foo', foo);

function foo(req, res){

  console.log(req.body); // ที่รับมา

 res.send('hello world'); // ส่งกลับ

};


//  port

const port = 8090;


app.listen(port, () => {

  console.log(`Server running on port${port}`);

});


html ต้องส่งมาจาก server จะเรียกจาก File ไมได้ติด Securityของ Browser
สำหรับ หน้า จอ index.html. , 
check me javascript เป็นการเรึยกโดย javascript
Send to Backend เป็นการ Post ของ Form
การ Encode ต้องใช้ เป็น application/x-www-form-urlencoded
data ที่ส่งเป็น name=Big จะเป็น {name:"Big} ใน Server 
และ ต้องการต่อ ใช้ &
ดูค่า ให้ใช้ Chrome และ กด inspect จะเห็น Console

<!DOCTYPE html>
<html>
<body>
<script>
function myFunction(){
var data = "name=Big";// data ที่จะส่งด้วย javascript

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "http://localhost:8090/foo");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(data); // do send data here
}
</script>


<button onclick="myFunction()">Click me Javascript </button>
<form action="http://localhost:8090/example" method="POST">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<button type="submit">Send to backend</button>
</form>
</body>
</html>